【python学习】批量替换/修改文件某字符串

批量替换文件某字符串

本文实现批量读取文件,并修改文件中某字符串,重新写入文件。

任务要求

在这里插入图片描述
要求实现将某文件夹下,所有子文件夹中文件的某个字段进行修改

代码思路

代码思路设计如下:
【对单份文件】

  1. 使用read()将文件内容读取为一个字符串
  2. 使用replace()将该字符串中的某个字段进行替换
  3. 重新以只写模式读入文件,将修改后的字符串重新写入文件

【对多份文件】
结合os模块,依次读入文件夹路径,子文件夹路径,文件路径,然后使用for循环,对每份文件进行遍历,然后执行读入文件、替换字符串、重新写入文件的操作

实现代码

import os
def new_file(file_PATH,old_str,new_str):
    '''
    该函数实现批量读入文件,并寻找替换某个字符串,将修改后的字符串重新写入文件
    file_PATH:主文件夹路径
    folder_path:子文件夹路径
    file_path:文件路径
    old_str:待修改的字符串
    new_str:修改后的字符串
    '''
    folder_list=os.listdir(file_PATH)#文件夹下的子文件夹列表
    for folder in folder_list:
        folder_path=os.path.join(file_PATH,folder)#子文件夹路径
        file_list=os.listdir(folder_path)#子文件夹下的文件列表
        for file in file_list:
            file_path=os.path.join(folder_path,file)#文件路径
            with open(file_path, "r") as f:  # 以只读方式打开文件
                data = f.read()  # 读取文件,读取为一个字符串
                str_replace = data.replace(old_str,new_str)#将字符串中的某个字符进行替换
                with open(file_path, "w") as f:#重新打开文件,选择写入模式
                    f.write(str_replace)      # 将修改后的字符串重新写入文件
#函数执行
if __name__ == "__main__":
    file_PATH=r'/quantum_chemistry/xtb_calc/file'
    old_str="PBE"
    new_str="BLYP"
    new_file(file_PATH=file_PATH,old_str=old_str,new_str=new_str)