如何在Python中将子目录下以_开头的文件名读取到变量中?
批量获取子目录中下划线开头的文件名并作为函数参数
Shell(Bash)实现
直接用find命令递归查找目标文件,结合数组存储后遍历调用函数:
# 定义处理文件的自定义函数 process_file() { echo "正在处理文件: $1" # 此处添加你的业务逻辑,比如读取文件内容、执行分析脚本等 } # 递归查找所有子目录中以下划线开头的文件,存入数组 mapfile -t target_files < <(find . -type f -name "_*") # 遍历数组,将每个文件名作为参数传入函数 for file in "${target_files[@]}"; do process_file "$file" done
find . -type f -name "_*":递归遍历当前目录下所有子目录,筛选出类型为文件、文件名以_开头的目标文件mapfile -t:将find的输出结果逐行存入target_files数组,避免文件名含空格时出现拆分问题- 遍历数组时用双引号包裹变量,确保特殊字符(空格、换行等)的文件名能被正确处理
Python实现
通过os.walk遍历目录树,收集符合条件的文件路径后批量调用函数:
import os def process_file(file_path): print(f"正在处理文件: {file_path}") # 此处添加你的业务逻辑,比如解析文件内容、调用处理接口等 # 收集所有目标文件的完整路径 target_files = [] for root, _, files in os.walk('.'): for file in files: if file.startswith('_'): target_files.append(os.path.join(root, file)) # 逐个传入函数处理 for file in target_files: process_file(file)
os.walk('.'):遍历当前目录及所有子目录,返回每个目录的根路径、子目录列表、文件列表file.startswith('_'):筛选文件名以_开头的文件os.path.join(root, file):拼接得到文件的完整绝对路径,避免路径混乱
内容的提问来源于stack exchange,提问作者paul
相关产品推荐
相关产品推荐

