吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 836|回复: 13
收起左侧

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

[复制链接]
ling123 发表于 2024-10-24 19:57
又来整点看似没啥用但是很实用的小脚本了
基础解释:这个是将A内容替换成B内容的一个脚本。

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

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

上代码:
[Python] 纯文本查看 复制代码
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这些支持中文的编码即可。
或者使用支持中文的依赖库去转换

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

免费评分

参与人数 2吾爱币 +10 热心值 +2 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wkdxz + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wkdxz 发表于 2024-10-26 14:57
很有用,偶尔需要改点东西很方便。
archon1 发表于 2024-10-26 00:43
本帖最后由 archon1 于 2024-10-26 00:46 编辑
ling123 发表于 2024-10-25 20:16
我这同时批量十二十几个文件都没毛病都正常

你有同时处理过上千个,每个数百K以上的文本文件的查找替换工作吗?
几十个文件的咱就不要提了,况且还有文件大小。
python对于处理小批量、文件大小不大、查找替换规则简单的文件在时间速度上还可以接受;数量超多+文件大的在设计python时就太复杂了,而且在正式替换前至少还要小规模验证查找替换的规则的结果的正确性,你用python来设计……,我的天。
专有工具有专有工具的适用场景的。
 楼主| ling123 发表于 2024-10-24 20:00
import os
import re

这个是两个import库,上面代码使用要换行下,应该是删到换行符了
 楼主| ling123 发表于 2024-10-24 20:13
另外这主要是批量替换为主
博爵 发表于 2024-10-24 22:33
我用这种方式,制作了一个ae中英文切换脚本
archon1 发表于 2024-10-25 00:58
ling123 发表于 2024-10-24 20:13
另外这主要是批量替换为主

有组极其强大的工具叫f.exe/fr.exe/wfr.exe/bwfr.exe。Linux/Windows都可用。
再不济你用sed 也行啊。
效率高太多,功能也更加强大。
你用python,我的天,你试一下目标文件3~5位数量的时候,你唯一想的就是自杀。
zhilai 发表于 2024-10-25 01:57
对的,我也只用sed,或者vi
 楼主| ling123 发表于 2024-10-25 20:16
archon1 发表于 2024-10-25 00:58
有组极其强大的工具叫f.exe/fr.exe/wfr.exe/bwfr.exe。Linux/Windows都可用。
再不济你用sed 也行啊。
...

我这同时批量十二十几个文件都没毛病都正常
 楼主| ling123 发表于 2024-10-26 07:03
archon1 发表于 2024-10-26 00:43
你有同时处理过上千个,每个数百K以上的文本文件的查找替换工作吗?
几十个文件的咱就不要提了,况且还 ...

主要这脚本我是安卓上运行的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表