我似乎无法打开具有Unicode文件名的文件。可以说我这样做:
for i in os.listdir():
open(i, 'r')
当我尝试寻找解决方案时,总是会看到有关如何向文件读写unicode字符串的页面,而不是有关如何使用具有unicode名称的
file()
或open()
打开文件的页面。 最佳答案
只需为文件名传递open()
一个unicode字符串:
在Python 2.x中:
>>> open(u'someUnicodeFilenameλ')
<open file u'someUnicodeFilename\u03bb', mode 'r' at 0x7f1b97e70780>
在Python 3.x中,所有字符串都是Unicode,因此实际上没有任何内容。
与往常一样,请注意,打开文件的最佳方法始终是将
with
statement与open()
结合使用。编辑:关于
os.listdir()
的建议再次有所不同,在Python 2.x下,您必须小心:Source
简而言之,如果您要使用Unicode,请将Unicode放入:
>>> os.listdir(".")
['someUnicodeFilename\xce\xbb', 'old', 'Dropbox', 'gdrb']
>>> os.listdir(u".")
[u'someUnicodeFilename\u03bb', u'old', u'Dropbox', u'gdrb']
请注意,该文件仍会以任何一种方式打开-由于它将是8位字符串,因此无法在Python中很好地表示,但仍然可以使用。
open('someUnicodeFilename\xce\xbb')
<open file 'someUnicodeFilenameλ', mode 'r' at 0x7f1b97e70660>
在3.x下,一如既往,它始终是Unicode。