本文介绍了是否在给定目录及其子目录中递归地用Python替换文件中的字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!
问题描述
如何在给定目录及其子目录内递归地将文件内的字符串匹配替换为给定的替换?
伪码:
推荐答案
将所有这些代码放入名为mass_replace
的文件中。在Linux或MacOSX上,您可以执行chmod +x mass_replace
,然后只需运行以下命令。在Windows下,您可以使用python mass_replace
后跟适当的参数来运行它。
编辑:我已将上述代码从原始答案更改。有几个变化。首先,mass_replace()
现在调用re.compile()
预编译搜索模式;其次,为了检查文件的扩展名是什么,我们现在向.endswith()
传递文件扩展名元组,而不是调用.endswith()
三次;第三,它现在使用最新版本的Python中提供的with
语句;最后,file_replace()
现在检查是否在文件中找到该模式,如果(旧版本会重写每个文件,即使输出文件与输入文件相同也会更改时间戳;这很不雅观。)
edit:我将其更改为默认替换每个文件,但是您可以使用一行代码进行编辑,以将其限制为特定的扩展名。我认为替换每个文件是更有用的开箱即用的默认设置。可以使用不接触的扩展名或文件名列表、不区分大小写的选项等对其进行扩展。
编辑:@asciimo在评论中指出了一个错误。我对此进行了编辑以修复错误。str.endswith()
记录为接受要尝试的字符串元组,但不接受列表。已修复。另外,我让两个函数接受一个可选参数,以允许您传入一个扩展元组;修改此参数以接受命令行参数以指定哪些扩展应该非常容易。
这篇关于是否在给定目录及其子目录中递归地用Python替换文件中的字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!
本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!