在Python中,将行递归地附加到目录中的所有文件

在Python中,将行递归地附加到目录中的所有文件,python,os.walk,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

我是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()
导入操作系统
dir_name=“C:\\Users\\\\Desktop\\test\\”#根据需要编辑
对于os.walk中的父级、目录名、文件名(目录名):
对于文件名中的fn:
f=打开(fn,‘a’)
f、 写入(“文本\n”)
f、 关闭()

当我运行我提供的脚本时,“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")

即使发生错误,也要正确关闭文件。

此答案正确识别了主要问题,但通常需要使用
os.path.join(parent,fn)
来获取相对于当前工作目录的完整文件名。