Python原地替换文件中的内容

需要使用fileinput这个标准库

官网链接:https://docs.python.org/zh-cn/3/library/fileinput.html


代码如下:

#!/usr/bin/env python
# coding: utf-8
"""原地替换文件中的内容

使用标准库中的fileinput中的类FileInput来原地过滤/原地重写文件
例如将'Sample.txt'文件中的'Hi'这个单词替换为'Hello',其余不变
"""

from fileinput import FileInput


def replace_text_in_file():
    file_name = 'Sample.txt'
    old_word = 'Hi'
    new_word = 'Hello'
    # inplace=True:开启原地重写
    # encoding='utf-8':编码格式设置为UTF-8格式
    for old_line in FileInput(file_name, inplace=True, encoding='utf-8'):
        if old_word in old_line:
            # print之前可以做任何合规操作
            new_line = old_line.replace(old_word, new_word)
            # print不会在控制台打印任何输出,而是直接输出到原文件中
            print(new_line, end='')
        else:
            # 读取文件中的每行的line都自带一个'\n',所以让line的末尾不加任何东西
            print(old_line, end='')


# 上一个函数的优化写法
def replace_text_in_file_optimize():
    file_name = 'Sample.txt'
    old_word = 'Hi'
    new_word = 'Hello'
    for line in FileInput(file_name, inplace=True, encoding='utf-8'):
        # 这里可以直接对每行都尝试进行替换的操作,无需判断
        print(line.replace(old_word, new_word), end='')


if __name__ == '__main__':
    replace_text_in_file()
    # replace_text_in_file_optimize()



示例 Sample.txt 文本文件的内容如下:

这是一个示例文本文件
里面有一些示例内容

Hi Google!

其他示例内容


运行代码后 Sample.txt 内容如下:

这是一个示例文本文件
里面有一些示例内容

Hello Google!

其他示例内容


注:此文件需要和上面的py文件同级,即在同一目录下


posted @ 2022-10-26 15:16  Alan_LJP  阅读(402)  评论(0)    收藏  举报