爬虫的时候由于很多打包下载zip的文件,而zip压缩包内的文件却是中文的,导致解压出来的文件是乱码的情况。
解压后的文件名大概是这个样子的 ╩Θ╔·╧└.txt 正常编码是 书生侠.txt 。
而这其实并不是因为文件编码问题导致,仅仅是文件名的编码。所以只处理文件名部分。如果要处理文件部分可以直接百度搜索即可【其实就是把对应用encode(‘cp437’).decode(‘gbk’)处理下,我这里只是处理了文件名字】
)。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author : kinggoo # @Software: 鳗鱼是条狗 # @Cnblogs :https://kinggoo.com/pyzipfilenamebad.htm import os from pathlib import Path import zipfile def file_name(file_dir): i=0 for root, dirs, files in os.walk(file_dir): for file in files: if os.path.splitext(file)[1] == '.zip': i = i + 1 zippath = file_dir + '\\' + file zfile = zipfile.ZipFile(zippath, 'r', zipfile.ZIP_DEFLATED) for zip_file in zfile.namelist(): try: zipn = zip_file.encode('cp437').decode('gbk') except: zipn = zip_file.encode('utf-8').decode('utf-8') print("在处理的压缩包文件名:%s" %zipn) if os.path.isfile(file_dir + '/' +zipn): print("被解压文件已存在:%s" % file_dir + '/' +zipn) continue zfile.extract(zip_file,file_dir + '/tmp/') os.chdir(file_dir + '/tmp/') os.rename(zip_file,file_dir + '/' + zipn) print("%s - %s "%(zip_file,file_dir + '/' +zipn)) print("已处理第 %s 个压缩包" %i) print("完成"+str(i)) if __name__=="__main__": file_name(r'Z:\txt\9')
- THE END -
Category: Python
0 条评论。