在 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")
这会确保正确关闭文件,即使发生错误也是如此。
我是 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")
这会确保正确关闭文件,即使发生错误也是如此。