2013-08-07 2 views
1

Я новичок в Python. Я пытаюсь ввести один путь и использовать os.walk() для поиска всех файлов и возврата имен файлов. Я также хочу использовать os.path.getsize() для получения размера файла и, наконец, записать их в файл csv.Python чтение папки и имена файлов Unicode

Однако, если имя файла отсутствует на английском языке, но на китайском, немецком, французском и т. Д. 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

[undecodable имена файлов могут быть возвращены в виде байтов на Python 2 на POSIX] (http://stackoverflow.com/q/21772271/4279) ('os.stat() 'сам должен работать нормально с байтами. Возможно, вам понадобится' os.chdir() '(дважды), чтобы избежать« os.path.join (unicode, bytes) »). – jfs

Смежные вопросы