使用argparse传入文件夹路径报PermissionError如何获取目录下zip文件列表
报错根因
open()方法仅支持打开单个普通文件,传入文件夹路径时操作系统会拒绝直接将目录作为文件读取,直接触发PermissionError: [Errno 13]错误。- 代码中引用了未定义的
args.filename属性,argparse配置中仅注册了foldername参数,即便解决权限问题也会触发属性不存在的报错。 - 现有代码未实现目录遍历、zip格式文件筛选的逻辑,无法输出目标zip文件列表。
修复实现
使用Python自带的pathlib模块完成目录校验、文件遍历和后缀筛选即可,无需安装第三方依赖,可直接运行的代码如下:
import argparse from pathlib import Path parser = argparse.ArgumentParser(description='Test') parser.add_argument("foldername", help="Foldername of log files archive to parse") args = parser.parse_args() # 校验传入路径是否为有效目录 target_path = Path(args.foldername) if not target_path.is_dir(): raise ValueError(f"路径 {args.foldername} 不是有效文件夹") # 获取当前文件夹下所有.zip格式文件,生成路径列表 zip_file_list = [str(file) for file in target_path.glob("*.zip")] # 如果需要递归扫描文件夹下所有子目录内的zip文件,替换为下面这行代码即可 # zip_file_list = [str(file) for file in target_path.rglob("*.zip")] print(zip_file_list)
运行时传入目标文件夹路径即可,示例命令:python 你的脚本文件名.py ./Test,执行后会直接输出该文件夹下所有zip文件的路径数组。
内容的提问来源于stack exchange,提问作者Olovia.solfjell
相关产品推荐
相关产品推荐

