如何批量替换多个S-n.txt文件指定文本并保留原文件名?
批量替换S-n.txt文件文本的解决方案
问题回顾
你需要批量替换S-1.txt到S-29.txt中的指定文本,但运行单文件代码时出现以下错误:
Traceback (most recent call last): File "c:/Users/lenovo/Documents/ctcs/Python/Untitled-2.py", line 11, in with open(r'S-1', 'r') as file: FileNotFoundError: [Errno 2] No such file or directory: 'S-1'
先解决「文件找不到」错误
这个错误的两个核心原因:
- 代码里写的打开路径是
S-1,但实际文件名是S-1.txt,漏掉了*.txt后缀* - 目标文件不在Python脚本的当前工作目录下
快速修复单文件错误的两种方式:
- 同目录放置:把
S-1.txt和Python脚本放在同一个文件夹,同时把代码里的r'S-1'改成r'S-1.txt' - 绝对路径:如果文件不在脚本目录,直接写完整路径,比如
r'C:/Users/lenovo/Documents/ctcs/S-1.txt'
批量处理1-29号文件的完整代码
下面的代码会自动遍历所有目标文件,替换指定文本后保留原文件名,同时加入异常处理避免单个文件出错导致程序崩溃:
# 定义要搜索和替换的文本 search_text = "opt freq" replace_text = "LAN2DZ" # 循环处理S-1到S-29的txt文件 for n in range(1, 30): filename = f"S-{n}.txt" try: # 读取文件内容(指定utf-8编码避免字符乱码) with open(filename, 'r', encoding='utf-8') as file: file_content = file.read() # 执行文本替换 updated_content = file_content.replace(search_text, replace_text) # 将替换后的内容写回原文件 with open(filename, 'w', encoding='utf-8') as file: file.write(updated_content) print(f"✅ 成功处理:{filename}") except FileNotFoundError: print(f"⚠️ 警告:未找到文件 {filename},已跳过") except Exception as e: print(f"❌ 处理 {filename} 时出错:{str(e)}") print("\n批量替换操作完成!")
代码关键细节:
- 使用
range(1, 30)生成1到29的序号,通过f-string快速拼接文件名 - 加入
try-except异常捕获,确保个别文件异常不影响整体批量任务 - 指定
encoding='utf-8',避免中文或特殊字符出现编码错误 - 实时打印处理状态,方便跟踪进度和排查问题
内容的提问来源于stack exchange,提问作者AIme999
相关产品推荐
相关产品推荐

