Bash中${files_path}/*.txt的Python等效实现方案咨询
Python中获取指定路径下所有.txt文件的等效实现
当然有啦!Python里有好几种简洁的方式实现和Bash中${files_path}/*.txt完全等效的功能,下面给你拆解几个常用方案:
方法1:使用glob模块(最直接的等效方式)
glob模块是专门处理文件路径通配符匹配的工具,规则和Shell完全一致,用起来特别顺手。
import glob # 替换成你的目标路径 files_path = "/your/target/directory" # 匹配路径下所有.txt文件 txt_files = glob.glob(f"{files_path}/*.txt") # 遍历打印结果 for file in txt_files: print(file)
如果需要递归匹配子目录里的.txt文件(相当于Shell的${files_path}/**/*.txt),只需要加上recursive=True参数(Python 3.5及以上支持):
txt_files = glob.glob(f"{files_path}/**/*.txt", recursive=True)
方法2:使用pathlib模块(现代面向对象风格)
Python 3.4+引入的pathlib模块提供了更优雅的面向对象文件路径操作,代码可读性更高,是现在推荐的写法。
from pathlib import Path # 初始化路径对象 files_path = Path("/your/target/directory") # 匹配当前路径下所有.txt文件 txt_files = list(files_path.glob("*.txt")) # 递归匹配子目录的话,直接用rglob方法 # txt_files = list(files_path.rglob("*.txt")) # 遍历打印,Path对象可以直接转成字符串 for file in txt_files: print(str(file))
方法3:使用os模块(传统兼容方案)
如果需要兼容老版本Python(3.4以下),可以用os模块的基础方法手动筛选:
import os files_path = "/your/target/directory" txt_files = [] # 遍历目录下的所有条目 for filename in os.listdir(files_path): # 筛选出以.txt结尾的文件 if filename.endswith(".txt"): # 拼接完整路径 full_path = os.path.join(files_path, filename) # 可选:如果需要确保是文件而非目录 if os.path.isfile(full_path): txt_files.append(full_path) # 打印结果 for file in txt_files: print(file)
总结
如果是新版本Python,优先推荐pathlib或者glob,代码更简洁、符合Pythonic风格;老版本则可以用os模块的组合写法。
内容的提问来源于stack exchange,提问作者Bella
相关产品推荐
相关产品推荐

