実行時にディレクトリ内のランダムなビデオファイルを開く次のPythonスクリプトがあります。
import glob,random,os
files = glob.glob("*.mkv")
files.extend(glob.glob("*.mp4"))
files.extend(glob.glob("*.tp"))
files.extend(glob.glob("*.avi"))
files.extend(glob.glob("*.ts"))
files.extend(glob.glob("*.flv"))
files.extend(glob.glob("*.mov"))
file = random.choice(files)
print "Opening file %s..." % file
cmd = "rundll32 url.dll,FileProtocolHandler \"" + file + "\""
os.system(cmd)
出典:スーパーユーザーの投稿の回答'フォルダ内のランダムなファイルを開き、指定されたファイル名拡張子を持つファイルのみを開くように設定するにはどうすればよいですか?'
これは、スクリプトとしてこれを使用して、BATファイルによって呼び出されます。
C:\Python27\python.exe "C:\Programs\Scripts\open-random-video.py" cd
このBATファイルをランダムなビデオを開きたいディレクトリに置きます。
ほとんどの場合、正常に動作します。ただし、ファイル名にUnicode文字(私の場合は日本語や韓国語の文字など)が含まれているファイルを開くことはできません。
これは、BATファイルとPythonスクリプトがディレクトリで実行され、ファイル名にUnicode文字が含まれるファイルを開いた場合のエラーメッセージです。
C:\TestDir>openrandomvideo.BAT
C:\TestDir>C:\Python27\python.exe "C:\Programs\Scripts\open-random-video.py" cd
The filename, directory name, or volume label syntax is incorrect.
そのログの.FLVビデオファイルのファイル名は、コマンドラインログの元のファイル名(소시.flv)から「∩╗┐」に変更されていることに注意してください。
編集:上記のコマンドラインエラーメッセージは、BATファイルを「UTF-8withBOM」として保存したことが原因であることがわかりました。'ANSIまたはUTF-16'として保存すると、代わりに次のメッセージが表示されますが、ファイルは開かれません。
C:\TestDir>openrandomvideo.BAT
C:\TestDir>C:\Python27\python.exe "C:\Programs\Scripts\open-random-video.py" cd
Opening file ??.flv...
これで、そのログ内の.FLVビデオファイルのファイル名が元のファイル名(소시.flv)から「??。flv」に変更されます。コマンドラインログ。
私はWindows7、64ビットでPython2.7を使用しています。
ファイル名にUnicode文字が含まれているファイルを開くことを許可するにはどうすればよいですか?