如何用Python自动遍历多级文件夹并批量解压所有zip文件
递归遍历子目录批量解压ZIP的Python实现
你原来的代码仅使用os.listdir()遍历根目录下的第一层文件,无法识别子目录内的文件,替换为os.walk()即可实现全层级目录遍历,修改后的完整代码如下:
import os import zipfile # 要遍历的根目录,可根据实际情况修改 dir_name = 'E:/binance-public-data/python/data/spot/monthly/trades' extension = ".zip" # 递归遍历所有层级的目录和文件 for root, dirs, files in os.walk(dir_name): for file in files: # 筛选zip格式文件 if file.endswith(extension): # 拼接得到zip文件的绝对路径,解决原代码的路径匹配错误 zip_file_path = os.path.join(root, file) zip_ref = zipfile.ZipFile(zip_file_path) # 此处默认将文件解压到zip所在的子目录,如需统一解压到根目录,将root替换为dir_name即可 zip_ref.extractall(root) zip_ref.close() # 完成解压后删除原zip文件,不需要可删除此行 os.remove(zip_file_path)
主要调整点说明:
- 用
os.walk()替代os.listdir(),自动遍历根目录下所有层级的子文件夹,无需手动指定每个币种子目录路径 - 修复了原代码的路径错误:原代码直接调用
os.path.abspath(item)会以脚本运行目录为基准拼接路径,大概率出现找不到文件的报错,改为用os.path.join(root, file)拼接当前遍历目录和文件名,得到准确的zip文件绝对路径 - 解压路径支持灵活调整:默认解压到zip文件所在的子目录,符合多币种目录各自存放对应交易数据的使用习惯,如需统一解压到根目录仅需修改
extractall的入参即可
内容的提问来源于stack exchange,提问作者Vobliss
相关产品推荐
相关产品推荐

