在Python中以递归方式将行附加到目录中的所有文件

时间:2019-04-09 19:43:45

标签: python os.walk

我是Python的新手,正在寻找语法帮助。

我有一个目录和带有* .properties文件(超过100个文件)的子目录。我想在每个文件的末尾附加两行文本。

我正在尝试使用os.walk和f.write,但是不确定如何将两者结合起来。在下面的代码中,我也尝试通过添加1行文本开始,但是我希望文本为2行。

import os

dir_name = "C:\\Users\\<user>\\Desktop\\test\\" # Edit as needed


for parent, dirnames, filenames in os.walk(dir_name): 
    for fn in filenames:
        f = open(fn, 'a')  
        f.write("text\n")
        f.close()

运行提供的脚本时,“测试”中的文件没有任何反应

2 个答案:

答案 0 :(得分:2)

文件名不是路径。您必须将其目录和文件名的路径连接起来:

f = open(os.path.join(parent, fn), 'a')

此外,这与您的问题无关,而是:

f = open(fn, 'a')  
f.write("text\n")
f.close()

要做一个好的(“ pythonic”)样式:

with open(fn, 'a') as f:
    f.write("text\n")

即使发生错误,它也可以正确关闭文件。

答案 1 :(得分:0)

f = open('fn', 'a')应该是f = open(fn, 'a')