当我使用python 2.5打印目录时,为什么结果是ascII而不是中文

时间:2014-02-21 08:01:59

标签: python character-encoding

问题是,我使用python2.5的os moduel来获取具有specialize后缀名的文件。但结果是ascII,而不是中国人。为什么?谁能帮我?谢谢 代码如下:

#coding=utf-8
__author__ = 'Administrator'
import os
def listDirectory(directory, fileExtList):
    "get list of file info objects for files of particular extensions"
    fileList = [os.path.normcase(f) for f in os.listdir(directory)]
    fileList = [os.path.join(directory, f) for f in fileList if os.path.splitext(f)[1] != '' and os.path.splitext(f)[1] in fileExtList]
    return fileList
print listDirectory("g:\\", '.rar')

,输出

g:\\11800 \xb9\xe2\xb7\xfc\xbc\xbc\xca\xf5\xbb\xf9\xb4\xa1\xd3\xeb\xbc\xbc\xc4\xdc\xa3\xa8\xcb\xf9\xd3\xd0\xd2\xb3\xa3\xa9.rar'

不是中国人

1 个答案:

答案 0 :(得分:1)

(你显然省略了部分实际输出,因为打印list看起来不像那样)

listDirectory返回一个列表;当您print非字符串值时,它会首先将其转换为表示repr()函数为该值返回的值)。 Python中字符串的表示将所有非ASCII值显示为反斜杠转义。如果你想实际的可打印字符,你可能想要调用print '\n'.join(listDirectory("g:\\", '.rar'))的内容; listDirectory 返回的字符串包含正确的字符,只是您使用的print语句将它们反向输出。