2011-01-28 25 views
1

在Windows XP上使用Python 2.6.5,我正在通過調用os.stat來獲取它們的大小來處理文件的目錄。當腳本到達一個恰好在名稱中嵌入了非ASCII字符的特定文件時,腳本就會失敗。拋出的異常是os.stat找不到指定的文件。我知道該文件在那裏,因爲我可以在iTunes或VLC媒體播放器中播放。os.stat與時髦字符文件失敗

有問題的文件的名稱有

1-02 Só Danço Samba (Jazz Samba).m4a 

萬一不被顯示的字符,該字符串是

'1-02 So\xb4 Danc\xb8o Samba (Jazz Samba).m4a' 

是我應該還是可以做的到讓os.stat可以接受這個名字?順便說一句,試圖打開該文件在Python中也出於同樣的原因失敗。

+1

哪裏你的腳本獲取文件名? – 2011-01-28 15:05:33

回答

1

嘗試在您的python文件的頂部插入行# coding=UTF-8(只在Philipp腳本中爲您的腳本中的unicode做出了改變),並確保將文件名存儲爲unicode而不是str。

測試了以下內容:

# coding=UTF-8 

import os 
fname = u'/temp/1-02 Só Danço Samba (Jazz Samba).m4a' 
print(os.stat(fname)) 
+1

第一個只能幫助在源文件中硬編碼的文件名。第二點更重要:Unicode字符串應該用於所有文件和目錄名稱(例如,作爲`listdir`函數的參數)。 – Philipp 2011-01-28 16:33:59