在 Python 中递归地向目录中的所有文件追加行

Append Line to All Files in a Directory Recursively in Python

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

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

我正在尝试使用 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()

当我运行我提供的脚本时,"test"

中的文件没有任何反应

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

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

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")

这会确保正确关闭文件,即使发生错误也是如此。