关于rarfile的资料甚少,如果路径中包含中文的话会解压失败或出现乱码。参考一篇解决zipfile中文文件名的文章后找到解决方法 编码问题真是太让人头疼了。
def decompress_rar(rar_file_path):
"""
解压文件到某个目录
:param rar_file_path: 待解压的rar文件路径
:return:
"""
folder_path = os.path.dirname(rar_file_path)
rar_file = rarfile.RarFile(rar_file_path, 'r')
file_list = []
for file_info in rar_file.infolist():
#filename = unicode(file_info.filename, 'gb2312').encode("utf8") # 采用什么编码就用什么解码,再用 utf8 编码
filename = file_info.filename.encode('gb2312').decode('utf-8') # 也可以写成这样
Log('filename is :' + filename)
output_filename = os.path.join(folder_path, filename)
output_file_dir = os.path.dirname(output_filename)
if not os.path.exists(output_file_dir):
os.makedirs(output_file_dir)
with io.open(output_filename, 'wb') as f:
shutil.copyfileobj(rar_file.open(file_info.filename), f)
file_list.append(output_filename)
rar_file.close
return file_list
参考文章:python zipfile extract 解压 中文文件名_xinxinNoGiveUp的博客-CSDN博客_extractall