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

发布于 2021-01-29 15:06:43

我想递归搜索带有文本文件子目录的目录,并用多行字符串的内容替换文件中每次出现的{$ 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
关注者
0
被浏览
132
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看