我有一个路径如下的文件:D:/bar/クレイジー・ヒッツ!/foo.abc
我正在解析XML文件中的路径,并将其存储在名为path
的变量中,其格式为file://localhost/D:/bar/クレイジー・ヒッツ!/foo.abc
然后,执行以下操作:
path=path.strip()
path=path[17:] #to remove the file://localhost/ part
path=urllib.url2pathname(path)
path=urllib.unquote(path)
错误是:
IOError: [Errno 2] No such file or directory: 'D:\\bar\\\xe3\x82\xaf\xe3\x83\xac\xe3\x82\xa4\xe3\x82\xb8\xe3\x83\xbc\xe3\x83\xbb\xe3\x83\x92\xe3\x83\x83\xe3\x83\x84\xef\xbc\x81\\foo.abc'
更新1:我在Windows7上使用Python2.7
将文件名作为
unicode
字符串提供给open
调用。如何生成文件名?
如果你提供一个常数
在脚本开头添加一行:
然后,在支持UTF-8的编辑器中,将
path
设置为unicode
文件名:从目录内容列表中读取
使用
unicode
目录规范检索目录的内容:从文本文件中读取
打开包含文件名的文件,使用
codecs.open
从中读取unicode
数据。您需要指定文件的编码(因为您知道计算机上非Unicode应用程序的“默认windows字符集”是什么)。无论如何
做一件事:
在打开文件之前,如果不是“utf8”,请替换正确的编码。
这里有一些来自documentation的有趣的东西:
如果我理解正确,则应将文件名传递为unicode:
错误的路径是:
我想这是你文件名的UTF8编码版本。
我在Windows7上创建了一个同名文件夹,并在其中放置了一个名为“abc.txt”的文件:
因此,邓肯提出的
path.decode('utf8')
似乎起到了作用。更新
我不能为您测试这个,但是我建议您在执行
.decode('utf8')
之前尝试检查路径是否包含非ascii。这有点老套。。。相关问题 更多 >
编程相关推荐