在多个文件中写同一行的简洁方法 - Python
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在多个文件中写同一行的简洁方法 - Python相关的知识,希望对你有一定的参考价值。
我有几个打开的文件。现在,我需要在所有的文件中写上相同的行。我现在的代码如下,但它是不优雅的,非常重复。有没有一种方法可以用更少的行数来完成?
with open("a.txt", "a+") as fa,\
open("b.txt", "a+") as fb,\
open("c.txt", "a+") as fc,\
open("d.txt", "a+") as fd,\
open("e.txt", "a+") as fe,\
open("f.txt", "a+") as ff,\
open("g.txt", "a+") as fg:
fa.write("header")
fb.write("header")
fc.write("header")
fd.write("header")
fe.write("header")
ff.write("header")
fg.write("header")
在程序的其他部分(未显示),我以不同的方式处理每个文件,给每个文件附加不同的信息。
如果这个帖子是重复的,我很抱歉!
答案
简单的使用for循环。
for file in files_list:
with open(file, "a+") as fa:
fa.write("header")
把所有的文件名放在 files_list里
另一答案
你可以创建一个 上下文管理人 来创建一个已打开文件的字典,然后在这个字典中迭代,在所有文件中写头。
使用字典而不是列表,以确保你可以在主代码中独立可靠地使用文件
一个可能的实施方案。
from contextlib import contextmanager
@contextmanager
def open_many(key_path):
opened_files =
try:
opened_files = key: open(path, "w") for key, path in key_path.items()
yield opened_files
finally:
for f in opened_files.values():
f.close()
with open_many("a": "a.txt", "b": "b.txt") as file_map:
for f in file_map.values():
f.write("header")
以上是关于在多个文件中写同一行的简洁方法 - Python的主要内容,如果未能解决你的问题,请参考以下文章