2015-08-17 5 views
0

Мне нужно получить список файлов в каталоге, где имена файлов должны быть unicode.Как получить список всех файлов в unicode?

Следующий код дает мне список файлов.

files = [ f for f in listdir(filedirectory) if isfile(join(filedirectory,f)) ] 
for fi in files: 
    print(fi) 
    print(type(fi)) 

Результат:

AT10_nachmittags.JPG 
<type 'str'> 
AT11_nachmittags.JPG 
<type 'str'> 
AT12_nachmittags.JPG 
<type 'str'> 
AT2_morgens2.JPG 
<type 'str'> 
AT3_morgens.JPG 
<type 'str'> 
AT_morgens.JPG 
<type 'str'> 
Bühne.JPG 
<type 'str'> 
Bühnenauftritt.JPG 
<type 'str'> 

Проблема заключается в том, что они не являются юникода. Мне нужно, чтобы они были unicode, поэтому я могу написать их в файле, потому что они включают в себя немецкие символы «umlaute» unicode.

Я работаю на Mac OS X 10.10.4 с питоном 2.7.6

+0

OS и версия Python будет полезным –

+1

http://stackoverflow.com/a/9758014/2372812 выглядит уместным. –

+1

Если вы собираетесь работать с Unicode, я не могу достаточно подчеркнуть, сколько вы должны переместиться на Python 3. – dotancohen

ответ

3

Try выполнить listdir с FileDirectory как юникод строки аргумента. Например. FileDirectory = и «/ некоторые/реж»

Из документации:

os.listdir (путь) Возвращает список, содержащий имена записей в каталог дается пути. Список находится в произвольном порядке. Он не включает специальные записи '.' и «..», даже если они присутствуют в каталоге.

Доступность: Unix, Windows.

> Изменен в версии 2.3: В Windows NT/2k/XP и Unix, если путь является объектом Unicode , результатом будет список объектов Unicode. Неразрешимые имена файлов будут по-прежнему возвращаться в виде строковых объектов.

+0

все еще возвращает str объекты не unicode – Luke

+0

попытайтесь перейти на Python 3 – svfat

+0

@ Luke Я возвращаю OS X с python 2.7.10 и возвращает строки Unicode для меня. – Rishav

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