0

我有一个文件名"SSE-Künden, SSE-Händler.pdf"unicode char ( ü,ä) 当我在python解释器上打印这个文件名时,unicode值被转换成各自的ascii值'SSE-K\x81nden, SSE-H\x84ndler.pdf',但我想

测试目录包含名为“SSE-Künden, SSE-Händler.pdf”的 pdf 文件

我试过这个:path = 'C:\test' for a,b,c in os.walk(path): print c

['SSE-K\x81nden, SSE-H\x84ndler.pdf']

我如何将此 ascii 字符转换为其各自的 unicode val,我想"SSE-Künden, SSE-Händler.pdf"在解释器上显示原始名称(),并按原样写入某个文件。我如何实现这一点。我正在使用 Python 2.6 和 Windows 操作系统。

谢谢。

4

3 回答 3

3

假设您的终端支持显示字符,遍历文件列表并单独打印它们(或使用 Python 3,它在列表中显示 Unicode):

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> for p,d,f in os.walk(u'.'):
...  for n in f:
...   print n
...
SSE-Künden, SSE-Händler.pdf

另请注意,我使用 Unicode 字符串 (u'.') 作为路径。这指示os.walk返回 Unicode 字符串而不是字节字符串。在处理非 ASCII 文件名时,这是一个好主意。

在 Python 3 中,字符串默认为 Unicode,非 ASCII 字符会显示给用户,而不是显示为转义码:

Python 3.2.1 (default, Jul 10 2011, 21:51:15) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> for p,d,f in os.walk('.'):
...  print(f)
...
['SSE-Künden, SSE-Händler.pdf']
于 2011-09-22T06:54:39.690 回答
1
for a,b,c in os.walk(path):
    for n in c:
        print n.decode('utf-8')
于 2011-09-22T06:58:20.297 回答
0

写入文件:http ://docs.python.org/howto/unicode.html#reading-and-writing-unicode-data

于 2011-09-22T06:54:50.283 回答