我已经阅读了很多关于这个主题的内容,包括似乎是关于这个主题的权威指南:http: //docs.python.org/howto/unicode.html
也许对于更有经验的开发人员来说,该指南可能就足够了。但是,就我而言,我比开始时更困惑,但仍然没有解决我的问题。
我正在尝试使用 os.walk() 读取文件名,并在将这些信息写入文本文件之前获取有关文件的某些信息(例如文件大小)。只要我没有遇到任何文件名以 utf 编码的文件,它就可以工作。当它遇到一个带有 utf 编码名称的文件时,我得到一个类似这样的错误:
WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: 'Documents\\??.txt'
在这种情况下,该文件被命名为唽咿.txt。
到目前为止,我一直在尝试这样做:
for (root, dirs, files) in os.walk(dirpath):
for filename in files:
filepath = os.path.join(root, filename)
filesize = os.stat(filepath).st_size
file = open(filepath, 'rb')
stuff = get_stuff(filesize, file)
file.close()
如果重要的话,dirpath 来自代码的早期部分,相当于“dirpath = raw_input()”。
我尝试了各种方法,例如将文件路径行更改为:
filepath = unicode(os.path.join(unicode(root), unicode(filename)))
但是我尝试过的任何事情都没有奏效。
这是我的两个问题:
如何让它将正确的文件名传递给 os.stat() 方法,以便我可以从中获得正确的响应?
我的脚本需要将一些文件名写入文本文件,以后可能要从中读取。此时,它需要能够根据刚刚从文本文件中读取的内容找到文件。如何将此类文件名正确写入文本文件,然后再正确读取?