小编典典

Python-递归查找和替换文本文件中字符串的方法

python

我想递归搜索带有文本文件子目录的目录,并用多行字符串的内容替换文件中每次出现的{$ 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

阅读 437

收藏
2021-01-20

共1个答案

小编典典

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模块

2021-01-20