工作中经常遇到需要解压各种压缩包的接口需求,包括.tar、.tar.gz、.zip、.rar包,为了避免每次都得重新谷歌,试错调错,我将各种解压的python代码整理出来,下次可以直接拿过来用,建议小伙伴们收藏。
import tarfile
import zipfile
import rarfile
def uncompress(src_file, dest_dir):
"""解压各种类型的压缩包
:param src_file: 你要解压的压缩包文件
:type src_file: file
:param dest_dir: 你要解压到的目标路径
:type dest_dir: str
"""
file_name, file_type = os.path.splitext(src_file.filename)
try:
if file_type == '.zip':
# 需要安装zip包:pip install zipp
zip_file = zipfile.ZipFile(src_file)
for names in zip_file.namelist():
zip_file.extract(names, dest_dir)
zip_file.close()
elif file_type == '.rar':
# 需要安装rar包:pip install rarfile
rar = rarfile.RarFile(src_file)
os.chdir(dest_dir)
rar.extractall()
rar.close()
else:
# file_type == '.tgz' or file_type == '.tar' or file_type == '.gz'
# Python自带tarfile模块
tar = tarfile.open(fileobj=src_file)
for name in tar.getnames():
tar.extract(name, dest_dir)
tar.close()
except Exception as ex:
return False
return True
调用示例:
if __name__ == '__main__':
dest_dir = '你要解压到的目标路径'
with open('你要解压的压缩包文件路径', 'rb') as src_file:
result = uncompress(src_file, dest_dir)
注意:liunx解压rar包,需要安装unrar:
$ sudo apt-get install unrar
主页更多干货,欢迎大家关注我,如果本文对你有帮助,记得点个赞~