2013-08-07 46 views
1

我是Python新手。我正在嘗試輸入一個路徑並使用os.walk()來搜索所有文件,並返回這些文件的名稱。我也想用os.path.getsize()來獲取文件大小,最後將它們寫入一個csv文件。閱讀unicode文件夾和文件名的Python

但是,如果文件名不是英文,而是中文,德文,法文等,Python無法識別它,並且不會返回文件的大小。我想使用os.path.getsize(path)(參考下面的例子),但它不能識別文件的名稱。我如何讓Python識別文件的名稱並返回這些文件的大小?

例如:文件名是:"Показатели естественного и миграционного прироста до 2030г.doc"path="C:\xxxx\xxx\xxxx\Показатели естественного и миграционного прироста до 2030г.doc"

回答

3

如果您將Unicode輸入傳遞給os.walk(),您也將返回文件名作爲Unicode。

以下應該爲你

your_base_path = u"C:\\Directory" # note this is Unicode 
for root, dirs, files in os.walk(your_base_path): 
    for f in files: 
     print os.stat(os.path.join(root, f)).st_size 
+0

(http://stackoverflow.com/q/21772271/4279)([不可解碼的文件名也可以在Python 2中上POSIX返回作爲字節]'os.stat工作()'本身應該可以和字節一起工作,你可能需要'os.chdir()'(兩次)來避免'os.path.join(unicode,bytes)')。 – jfs