我有这些行来获取文件夹中的文件名。
# -*- coding: utf8 -*-
import os, sys
reload(sys)
sys.setdefaultencoding('utf8')
file_folder = "C:\\tem\\"
root, dirs, files = os.walk(file_folder).next()
for path, subdirs, files in os.walk(root):
for f in files:
print file_folder + f
当文件夹包含.xlsb文件时,它不起作用。 (Excel二进制工作簿文件)
返回的错误是:
[Decode error - output not utf-8]
我尝试将最后一行更改为编码/解码以使其正常工作但仍然不能。
如何正确显示它们?
答案 0 :(得分:1)
您的输出终端无法处理某些文件名中的Unicode字符。最简单的解决方案是将输出写入UTF-8编码的文件,然后使用支持Unicode字符的字体使用支持Unicode字符的字体读取结果。您仍然可以使用print
的另一个解决方案是获得支持UTF-8的IDE。
#!python2
import os,io
root = u'C:\\tem' # Use a Unicode root with os.walk() to get Unicode filenames.
with io.open('files.txt','w',encoding='utf8') as out:
for path, subdirs, files in os.walk(root):
for f in files:
out.write(os.path.join(path,f) + u'\n')
注意:
#coding:utf8
仅声明源文件的编码。如果您的源代码都是ASCII字符,则它不会执行任何操作。