[Python脚本] 指定路径文本文件内容替换

又来整点看似没啥用但是很实用的小脚本了
基础解释:这个是将A内容替换成B内容的一个脚本。

做这个脚本也是因为老修改一些文本文件的内容,手修,很fw,很sb,所以一气之下,恼羞成怒搞了这个脚本

既然是Python,当然是啥终端都支持运行Python脚本,安卓,Linux等等系统终端

上代码:

import osimport re
#by(作者) zero丶
def backup_file(file_path):
    """为文件创建一个.bak后缀的备份"""
    backup_path = file_path + '.bak' #被备份文件后缀,如有需要比如搞错了可以改成原来的文件后缀,无需要就删除
    with open(file_path, 'r', encoding='utf-8') as original_file, \
         open(backup_path, 'w', encoding='utf-8') as backup_file:
        backup_file.write(original_file.read())
 
def replace_content_in_files(directory, search_pattern, replacement):
    """在指定目录下的所有.java文件中替换内容"""
    word_boundary_pattern = r'\b' + re.escape(search_pattern) + r'\b'
    regex = re.compile(word_boundary_pattern)
 
    total_files = 0
    modified_files = 0
 
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith('.java'): #指定一个文本文件的文件后缀
                total_files += 1
                file_path = os.path.join(root, file)
                backup_file(file_path)  # 创建备份
                 
                # 替换文件中的内容
                with open(file_path, 'r+', encoding='utf-8') as f:
                    content = f.read()
                    if regex.search(content):
                        new_content = regex.sub(replacement, content)
                        f.seek(0)
                        f.write(new_content)
                        f.truncate()  # 清除替换后多余的内容
                        modified_files += 1
 
    print(f"总共处理了 {total_files} 个文件")
    print(f"其中修改了 {modified_files} 个文件")
 
if __name__ == "__main__":
    directory = "" #指定文件路径
    search_pattern = "" #被替换内容
    replacement = ""#需要替换文本
 
    replace_content_in_files(directory, search_pattern, replacement)

上面使用的是utf8的文本编码,如果路径之类乱码不支持中文换成gbk这些支持中文的编码即可。
或者使用支持中文的依赖库去转换

特别提示:请合理合法使用,切勿贪图小利赚利
做遵纪守法每一天的自己!

© 版权声明
THE END
喜欢就支持一下吧
点赞0
评论 抢沙发

请登录后发表评论

    暂无评论内容