You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:23:31