Python中用通配符指定Zip文件路径报错的解决方法
解决通配符路径在
files_extract_with_structure函数中报错的问题 问题核心是files_extract_with_structure不支持直接接收带通配符的路径,这类文件操作函数通常仅接受具体的单个文件路径,无法自动解析*这类通配符。你需要先手动解析出符合通配符规则的所有文件,再逐个调用提取函数。
解决方案(按环境选择)
场景1:Databricks环境
利用dbutils.fs.ls遍历目录,结合fnmatch过滤匹配文件名:
import fnmatch # 定义目录和匹配模式 dbfs_dir = "/mnt/devadls/pre/Source_Files/2022-10/" file_pattern = "767676.XXX.XXX.XXXX.*.txt.zip" # 获取目录下所有文件,过滤出符合模式的文件并转换为/dbfs路径 matching_files = [ f"/dbfs{dbfs_dir}{file.name}" for file in dbutils.fs.ls(dbfs_dir) if fnmatch.fnmatch(file.name, file_pattern) ] # 逐个处理匹配到的Zip文件 if matching_files: for file_source in matching_files: files_extract_with_structure(file_source, file_dest) else: print("未找到符合条件的Zip文件")
场景2:普通Python环境
使用glob模块直接解析通配符路径:
import glob # 带通配符的路径模式 file_pattern = "/dbfs/mnt/devadls/pre/Source_Files/2022-10/767676.XXX.XXX.XXXX.*.txt.zip" # 获取所有匹配的文件路径 matching_files = glob.glob(file_pattern) # 逐个调用提取函数 if matching_files: for file_source in matching_files: files_extract_with_structure(file_source, file_dest) else: print("未找到符合条件的Zip文件")
关键说明
- 增加空列表判断,避免无意义的函数调用。
- 若需要为每个Zip文件生成独立的目标路径,可以在遍历过程中根据文件名动态拼接
file_dest。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

