Basitçe open()
dosya adı için bir unicode dizesi geçirmek:
Python 2.x
:
Python 3.x ise
>>> open(u'someUnicodeFilenameλ')
<open file u'someUnicodeFilename\u03bb', mode 'r' at 0x7f1b97e70780>
, bütün dizeleri Unicode, bu nedenle hiçbir şey ona tam anlamıyla var .
Her zaman olduğu gibi, bir dosyayı açmanın en iyi yolunun her zaman with
statementopen()
ile birlikte kullanıldığını unutmayın.
Düzenleme: tavsiyem yine Python 2.x altında değişir os.listdir()
ile ilgili olarak, dikkatli olmak zorunda: Dosya adlarını döndürür
os.listdir(), bir sorun yarattığını: should it dönüşü Dosya adlarının Unicode sürümü, ya da kodlanmış sürümleri içeren 8-bit dizeleri dönmelidir? os.listdir(), dizin yolunu 8 bitlik bir dize veya bir Unicode dizesi olarak sağlayıp sağlamadığınıza bağlı olarak her ikisini de yapar. Bir Unicode dizgisini yol olarak iletirseniz, dosya isimlerinin kodlaması kullanılarak dosya adları çözülür ve bir Unicode dizgisi listesi döndürülür, 8 bitlik bir yol iletilirse dosya adlarının 8 bitlik sürümleri döndürülür. iyi dahilinde temsil edilmeyeceği - Dosya hala her iki şekilde açacağını
>>> os.listdir(".")
['someUnicodeFilename\xce\xbb', 'old', 'Dropbox', 'gdrb']
>>> os.listdir(u".")
[u'someUnicodeFilename\u03bb', u'old', u'Dropbox', u'gdrb']
Not: Eğer Unicode kurtulmak istiyorsak kısacası Yani
Source
, içinde Unicode koymak Python 8-bit bir dizi olacak, ama yine de işe yarayacak.
open('someUnicodeFilename\xce\xbb')
<open file 'someUnicodeFilenameλ', mode 'r' at 0x7f1b97e70660>
Her zamanki gibi 3.x altında her zaman Unicode olur.
kod Ben yapardım nasıl. Bunun nesi var? – kindall
Evet, bu kod ne işe yaramıyor? – agf