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

Python如何读取目录中文件名以指定前缀列表中前缀开头的文件

解决思路与修改后的代码

原来的代码逻辑错误(或报错)是因为当prefix变为列表后,prefix in filename会试图判断整个列表是否是文件名的子串,这完全不符合需求。我们需要修改前缀匹配逻辑,同时修正代码里的其他小问题:

关键修改点

  • 前缀匹配逻辑:把if prefix in filename改成if filename.startswith(tuple(prefix))。str.startswith()方法支持传入元组,会自动检查文件名是否以元组中的任意一个前缀开头,正好满足需求。
  • 路径转义修复:将路径写成原始字符串r'Data\Input_data',避免Windows路径中的\被当成转义字符引发问题。
  • 列表初始化优化:原来的df初始为None,后续赋值为字符串再调用append会报错,直接初始化为空列表df = [],代码更简洁且逻辑正确。

修改后的完整代码

import os

if dev:
    print('Reading files from downloaded data')
    df = []
    dir_path = r'Data\Input_data'
    for filename in os.listdir(dir_path):
        if filename.startswith(tuple(prefix)):
            print('using downloaded file', filename)
            df_file = os.path.join(dir_path, filename)
            df.append(df_file)

补充说明

如果你的prefix列表特别长,或者需要更灵活的匹配规则,也可以用生成器表达式结合any()实现,效果和startswith一致:

if any(filename.startswith(p) for p in prefix):

不过startswith(tuple(prefix))是Python内置的优化实现,性能会更好一些。

内容的提问来源于stack exchange,提问作者Kishu P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:25:28