📜  门|门 IT 2005 |第 89 题(1)

📅  最后修改于: 2023-12-03 15:42:21.507000             🧑  作者: Mango

题目简介

本题为“门|门 IT 2005”的第89题,要求编写一个程序,将指定目录下的所有txt文件中的所有“abc”替换为“def”。

题目要求

  1. 程序需要接收两个输入参数,分别为目录路径和需要替换的字符串。
  2. 程序需要将目录下所有txt文件中的需要替换的字符串全部替换为指定的字符串。
  3. 替换后的文件需要保存在原目录下,并保持原有的文件名。

实现思路

本题主要需要考虑文件的操作和字符串的替换。可以使用Python的os和shutil模块来操作文件,使用正则表达式来进行字符串替换。

  1. 首先,需要使用os模块中的walk函数来遍历目录中的所有文件,并对每个txt文件进行操作。

    import os
    
    for subdir, dirs, files in os.walk(path):
        for file in files:
            if file.endswith('.txt'):
                file_path = os.path.join(subdir, file)
                # 对文件进行操作
    
  2. 接着,使用Python的内置字符串函数replace来进行字符串替换。

    file_content = open(file_path).read()
    new_content = file_content.replace(old_str, new_str)
    
  3. 最后,需要将替换后的字符串写入文件保存。

    with open(file_path, 'w') as f:
        f.write(new_content)
    

Code

import os

def replace_files(path, old_str, new_str):
    """
    将指定目录下的所有txt文件中的所有“old_str”替换为“new_str”。
    """
    for subdir, dirs, files in os.walk(path):
        for file in files:
            if file.endswith('.txt'):
                file_path = os.path.join(subdir, file)
                file_content = open(file_path).read()
                new_content = file_content.replace(old_str, new_str)
                with open(file_path, 'w') as f:
                    f.write(new_content)

使用方法

使用以下命令即可调用函数:

replace_files('path/to/folder', 'abc', 'def')

其中,第一个参数为需要操作的文件夹路径,第二个参数为需要替换的字符串,第三个参数为替换后的字符串。