使用python编辑子目录中的所有文件

时间:2012-05-21 13:36:55

标签: python

我试图以递归方式遍历一系列目录(大约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,

我似乎无法取代我想要的东西。我要做的是仅根据搜索“无用”来改变整行。另外,有一种更好的方法来修改单行而不是重写整个文件吗?

感谢。

1 个答案:

答案 0 :(得分:3)

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

使用with open(...) as f:解析每个文件,对其进行分析,然后使用with open(..., 'w') as f:

覆盖它(仔细地,经过测试)