Python 2.6 Linux(CentOS)
我使用shutil.copyfile()函数来复制文件。如果文件不存在,我会在日志文件中写一条异常消息。所以,我得到错误符号的消息,因为我的文件路径包含俄语字符。例如:
原始文件路径 - “/ PNG / 401/405 /018_01200Г/ osv_1.JPG”('Г'是俄文符号)
消息中的文件路径 - “/PNG/401/405/018_/01200\xd0\x93/osv_1.JPG”
我试图使用此代码print(str(error).decode('utf-8'))
,但它不起作用。但是这段代码
print(os.listdir(r'/PNG/401/405/018_/')[0].decode('utf-8'))
工作得很好。有任何想法吗?
答案 0 :(得分:0)
让我们打破你的命令:
print(str(error).decode('utf-8'))
首先它会:
str(error)
将其转换为字符串,可以调用此temp_string
然后它会尝试:
temp_string.decode('utf-8)
这将作为字符串对象失败,没有.decode()
,因此您将收到如下错误消息:
builtins.AttributeError: 'str' object has no attribute 'decode'
永远不会进入print()
你应该做的是:
print(error.decode('utf-8'))
或者,您可以使用:
print(str(error))
答案 1 :(得分:0)
输出完全正确。 'Г'
是unicode字符U + 0413(CYRILLIC CAPITAL LETTER GHE),其UTF-8编码是2个字符'\xd0'
和'\x93'
。您只需使用支持utf8的文本编辑器(gvim或notepad ++)读取日志文件,或者如果必须在Python中处理它,请确保将其作为utf8编码文件读取。
答案 2 :(得分:0)
print(str(error).decode('string-escape'))
- 适合我