我想递归搜索带有文本文件子目录的目录,并用多行字符串的内容替换文件中每次出现的{$ replace}。如何用python实现?
[编辑]
到目前为止,我所拥有的只是使用os.walk的递归代码,以获取需要更改的文件列表。
import os import sys fileList = [] rootdir = "C:\\test" for root, subFolders, files in os.walk(rootdir): if subFolders != ".svn": for file in files: fileParts = file.split('.') if len(fileParts) > 1: if fileParts[1] == "php": fileList.append(os.path.join(root,file)) print fileList
签出os.walk:
import os replacement = """some multi-line string""" for dname, dirs, files in os.walk("some_dir"): for fname in files: fpath = os.path.join(dname, fname) with open(fpath) as f: s = f.read() s = s.replace("{$replace}", replacement) with open(fpath, "w") as f: f.write(s)
上面的解决方案有缺陷,例如实际上会打开它找到的每个文件,或者实际上将每个文件都读到内存中(如果您有1GB的文本文件,那就不好了),但这应该是一个好选择。初始点。
如果要执行比查找特定字符串更复杂的查找/替换操作,则可能还需要查看re模块。