Hello!今天我们来聊聊Python。你是不是经常在处理大量文件时遇到这种麻烦,每次替换字符串都得手动复制、替换,再保存。这回咱给你个新招,用一行代码直接搞定批量替换,连新文件都不生成。 先看看背景,之前的那种复制再替换的方法,对少量文件还行,可要是遇上几百上千个文件,这可是个体力活啊。更糟糕的是,有时候手一滑,原文件就没了。能不能只开一次原文件,就在原地把内容换掉?这正是咱们这个脚本的神奇之处。 核心思路其实就一句话:在打开文件时指定buffering=1。这样的好处是,读一行立马就写一行,原文件一直是打开状态,不会有临时文件产生。剩下的操作就是常规步骤:遍历文件夹和子文件夹,判断文件类型是Python还是其他格式,逐行读取并替换指定字符串,最后把修改好的内容写回原文件。 这就上代码了。别看代码不长,效果非常不错。咱们先来用它试试身手:把当前目录下所有Python文件里的"print('Hello')"都换成"print('Hi')",只要调用replace_in_files函数就行。 使用示例里写得很清楚,replace_in_files('.', 'print(\'Hello\')', 'print(\'Hi\')')这一行代码就搞定了。 对了,还有个小技巧要告诉你。如果你想让脚本也处理.txt文件或者其他后缀的文件,只要在判断条件里加上一句就行:if filename.endswith('.py') or filename.endswith('.txt')。这样就可以同时处理多种格式了。 最后说个注意点:把原文件一边读一边改一边写,会不会弄坏文件?放心吧,Python的r+模式配合buffering=1就能保证读写同步进行。实测在大型项目里运行都没问题。如果实在不放心,运行前先备份一下原文件就行啦。