如何将Python解压Zip文件的代码修改为处理Tar文件?
修改后的适配Tar文件的代码
import glob import os import tarfile # 匹配当前目录下的tar文件,若需支持压缩格式(如.tar.gz/.tgz)可改为r'./*.tar*' tarfiles = [os.path.basename(x) for x in glob.glob(r'./*.tar')] for tarfile_path in tarfiles: # 生成目标目录名,替换后缀为tar的情况 new_dirname = tarfile_path.replace('.bsw.', '_').replace('.tar', '') # 处理压缩tar文件的情况(如.tar.gz),可取消下面注释并替换上面的replace # new_dirname = tarfile_path.replace('.bsw.', '_').replace('.tar.gz', '').replace('.tgz', '') try: os.mkdir(f'output/{new_dirname}') except: print(f'output/{new_dirname} already exists') try: os.mkdir(f'output/{new_dirname}/subdir') except: print(f'output/{new_dirname}/subdir already exists') # 使用tarfile解压,自动识别压缩格式 with tarfile.open(f'./{tarfile_path}', 'r') as tarObject: tarObject.extractall(path=f'output/{new_dirname}/subdir')
关键修改说明
- 模块替换:去掉
zipfile.ZipFile,改用Python标准库的tarfile模块,这是处理tar归档的官方工具。 - 文件匹配规则:将
glob.glob(r'./*.zip')改为glob.glob(r'./*.tar'),如果你的tar文件是压缩格式(如.tar.gz、.tgz),可以改成r'./*.tar*'来匹配所有tar相关文件。 - 目录名生成:把原代码中替换
.zip的逻辑改成替换.tar,如果是压缩tar文件,需要额外处理.tar.gz或.tgz后缀。 - 解压逻辑:用
tarfile.open()替代ZipFile(),模式参数'r'会自动识别tar文件是否压缩(gzip/bzip2等),无需手动指定压缩格式。
内容的提问来源于stack exchange,提问作者INegativeI
相关产品推荐
相关产品推荐

