-1

我正在尝试递归地遍历一系列目录(大约 3 级深)。在每个目录中都是一系列文本文件,例如,如果该行包含某个字符串,我想用目录路径替换一行文本。

/path/to/text/file/fName.txt

如果 fName.txt 文本中的 fName 中的一行包含字符串“String1”,我想用“some text”+ file 替换这一行,其中 file 是路径的最后一部分。

这似乎在 python 中应该很容易,但我似乎无法管理它。

编辑:为一个写得很糟糕的问题道歉,我不得不匆忙离开,不应该按回车键。

这是我到目前为止所拥有的

import os

for dirname, dirs, files in os.walk("~/dir1/dir2"):
    print files
    for fName in files:
            fpath = os.path.join(dirname, fName)
            print fpath
            f = open(fpath)
            for line in f:
                #where I'm getting stuck
                s = s.replace("old_txt", "new_txt")

            #create new file and save output

我遇到的问题是如何仅根据线路的一部分替换整条线路。例如,如果该行是

That was a useless question,

我似乎无法替换我想要的东西。我要做的是仅基于搜索“无用”来更改整行。另外,有没有比重写整个文件更好的修改单行的方法?

谢谢。

4

1 回答 1

3

os.walk(看例子)就是你所需要的

用 解析每个文件with open(...) as f:,分析它,然后用with open(..., 'w') as f:

于 2012-05-21T13:44:28.907 回答