工作中经常遇到需要解压各种压缩包的接口需求,包括.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