Python脚本跨文件夹提取tar文件问题求助
解决Python脚本提取跨文件夹tar文件的问题
当前你的myscript.py仅能处理同目录下匹配filesextract\d+规则的tar文件,以下是几种修改方案,让脚本支持提取其他文件夹中的目标文件:
原代码
import os import re # Setup main paths. myfiles = os.listdir() pattern = re.compile(r"filesextract\d+") for files in myfiles: if(pattern.match(files) != None): command = "tar -xzvf " + files os.system(command)
方案1:指定固定目标文件夹
直接在脚本中定义要扫描的文件夹路径,替换target_folder为实际路径即可:
import os import re # 替换为你要扫描的目标文件夹路径(相对/绝对路径均可) target_folder = "./path/to/your/folder" pattern = re.compile(r"filesextract\d+") # 遍历目标文件夹下的文件 for filename in os.listdir(target_folder): if pattern.match(filename): # 拼接完整文件路径,避免路径错误 file_path = os.path.join(target_folder, filename) # 用单引号包裹路径,防止文件名含空格导致命令出错 command = f"tar -xzvf '{file_path}'" os.system(command)
方案2:通过命令行参数指定文件夹(灵活度更高)
让脚本支持运行时传入目标文件夹路径,无需修改脚本即可切换扫描目录:
import os import re import sys # 从命令行获取目标文件夹,未传入则默认当前目录 target_folder = sys.argv[1] if len(sys.argv) > 1 else os.getcwd() pattern = re.compile(r"filesextract\d+") for filename in os.listdir(target_folder): if pattern.match(filename): file_path = os.path.join(target_folder, filename) command = f"tar -xzvf '{file_path}'" os.system(command)
使用方式:
python myscript.py /path/to/your/target/folder
方案3:递归遍历所有子文件夹
如果需要提取目标根目录下所有子文件夹中的匹配文件,用os.walk实现递归扫描:
import os import re # 替换为要递归扫描的根文件夹路径 target_root = "./your/root/folder" pattern = re.compile(r"filesextract\d+") # 递归遍历所有子目录 for root, _, files in os.walk(target_root): for filename in files: if pattern.match(filename): file_path = os.path.join(root, filename) command = f"tar -xzvf '{file_path}'" os.system(command)
注意事项
- 确保脚本对目标文件夹有读取权限,且系统中已安装
tar命令 - 若文件名包含特殊字符(如空格、引号),建议用
shlex.quote()进行安全转义,示例:import shlex # ... command = f"tar -xzvf {shlex.quote(file_path)}"
内容的提问来源于stack exchange,提问作者Septiana Fajrin
相关产品推荐
相关产品推荐

