提取乐趣rarfile模块可以处理汉字吗?

时间:2013-12-28 12:29:10

标签: python

我在Python中使用rarfile和unrar来提取rar档案中的一些中文字符命名文件。 当我使用rarobj.extractall(TargetDir)函数时,它的工作原理。 但是当我使用

#encoding:utf-8
...
for fl in rarobj.namelist():
    rarobj.extract(fl,TargetDir)

有一个错误:

rarfile.RarNoFilesError: No files that match pattern were found [10]

并在以下内容中进行了更改:

#encoding:gbk
    ...
    for fl in rarobj.namelist():
        rarobj.extract(fl,TargetDir)

还有另一个错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)

并使用

for fl in rarobj.namelist():
    rarobj.extract(fl.encode('gbk'),TargetDir)

可以消除此错误,但是它无法提取fl文件,因为文件名不在rar存档中。

我如何处理这个问题?

rarobj.namelist()是

[u'E:\\2y.pptx', u'E:\\\u6211\u662fabc.pptx', 'E:\\3b.docx', u'E:\\2x.docx', 'E:\\1a.pptx', 'E:\\1b.docx']

1 个答案:

答案 0 :(得分:0)

使用open代替extract

file_like_object = rarobj.open(fl)
data = file_like_object.read()