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

Python遍历目录文件:按文件名字符串筛选并编辑文件问题求助

解决Python目录文件筛选与编辑问题

嘿,我来帮你搞定这个文件名筛选的问题!看起来你现在的代码已经能处理文件内容替换,但卡在了筛选特定文件名这一步对吧?我给你整理了两种实用方案,直接就能用~

方案1:基础字符串匹配(筛选含特定关键词的文件)

这个方案适合简单的“文件名包含某字符串”的场景,同时支持递归遍历子目录(如果不需要子目录可以调整代码):

import os
import datetime as dt

# 获取用户输入,新增文件名筛选关键词
target_str = input('Enter the string to filter files: ')
OldValue = input('Enter the value to be replaced: ')
NewValue = input('Enter the replacement value: ')
location = input('Enter path to directory: ')

# 遍历目标目录(包括所有子目录)
for root, dirs, files in os.walk(location):
    for file in files:
        # 核心筛选逻辑:判断文件名是否包含目标字符串
        if target_str in file:
            # 拼接完整文件路径,避免切换目录的混乱
            full_file_path = os.path.join(root, file)
            print(f'Processing file: {full_file_path}')
            
            # 读取并修改文件内容
            try:
                # 用utf-8编码打开,避免中文乱码问题
                with open(full_file_path, 'r', encoding='utf-8') as f:
                    content = f.read()
                
                # 替换指定内容
                updated_content = content.replace(OldValue, NewValue)
                
                # 写回文件
                with open(full_file_path, 'w', encoding='utf-8') as f:
                    f.write(updated_content)
                    
                print(f'Successfully updated: {full_file_path}')
            except Exception as e:
                # 捕获异常,避免程序崩溃
                print(f'Failed to process {full_file_path}: {str(e)}')

方案2:正则表达式匹配(更灵活的筛选规则)

如果你需要更复杂的文件名匹配(比如匹配特定后缀、忽略大小写、匹配特定格式的字符串),可以用上你导入的re模块,把筛选逻辑改成这样:

import re

# 比如:匹配包含target_str且以.txt结尾的文件,忽略大小写
match_pattern = re.compile(f'.*{target_str}.*\\.txt$', re.IGNORECASE)

# 替换原来的if判断为正则匹配
if match_pattern.match(file):
    # 后续文件处理逻辑和方案1一致

几个关键优化点

  • 放弃os.chdir():切换目录容易导致路径混乱,直接用os.path.join()拼接完整路径更可靠
  • 用os.walk()遍历:自动递归处理所有子目录,不用手动写嵌套循环
  • 增加异常处理:防止遇到权限不足、二进制文件等情况导致程序崩溃
  • 明确筛选逻辑:专门新增了target_str输入项,用来指定文件名要包含的字符串

内容的提问来源于stack exchange,提问作者Jim Herbert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:13:49