我這裏有這個Python腳本運行時打開目錄中的一個隨機視頻文件:如何允許打開文件名中含有Unicode字符的文件?
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)
來源:我的超級用戶發佈一個答案,「How do I open a random file in a folder, and set that only files with the specified filename extension(s) should be opened?」
這是由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)更改爲命令行日誌中的'∩╗┐'。
編輯:我瞭解到上述命令行錯誤消息是由於saving the BAT file as 'UTF-8 with BOM'。將其保存爲「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。'在命令行日誌中。
我在Windows 7,64位上使用Python 2.7。
如何打開文件名中包含Unicode字符的文件?
-1:源代碼字符編碼與用於文件名的字符編碼無關。無論如何,OP代碼中都有* no *非ascii字符。編碼聲明在這裏是不必要的。 – jfs