我是Python的新手,想要在根文件夹中的所有文件的每一行(仅在指定的文件扩展名中)和所有带有Python脚本的子文件夹之后添加文本行。 我从互联网上收集的内容:
import os
import fnmatch
for root, dirs, files in os.walk("dir"):
for filename in files:
if filename.endswith(".x",".y"):
with open(filename, "r") as f:
file_lines = [''.join([x.strip(), "some_string", '\n']) for x in f.readlines()]
with open(filename, "w") as f:
f.writelines(file_lines)
我用一个小文件夹测试了它,但得到错误: IOError:[Errno 2]没有这样的文件或目录
答案 0 :(得分:0)
以append
模式打开文件。
代码 -
import os
def foo(root, desired_extensions, text_line):
for subdir, dirs, files in os.walk(root):
for f in files:
file_path = os.path.join(subdir, f)
file_extension = os.path.splitext(file_path)[1]
if file_extension in desired_extensions:
with open(file_path, 'a') as f:
f.write(text_line + '\n')
if __name__ == '__main__':
foo('/a/b/c/d', {'.txt', '.cpp'}, 'blahblahblah')
答案 1 :(得分:0)
问题是您尝试仅通过其名称访问文件 - 忽略其位置的路径。 您需要使用完整路径来访问该文件:os.path.join(root,filename)
答案 2 :(得分:0)
filename
不包含路径。您需要加入root
和filename
来自行创建完整路径。我建议如下:
for path, _, files in os.walk("dir"):
for filename in files:
if os.path.splitext(filename)[1] in ("x", "y"):
with open(os.path.join(path, filename)) as file:
file_lines = ...
...