猿问

在多个文件中写入同一行的简洁方法 - 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")

在程序的其余部分(未显示),我以不同方式处理每个文件,向每个文件附加不同的信息。


如果这篇文章重复,我很抱歉!


哆啦的时光机
浏览 192回答 3
3回答

DIEA

只需使用 for 循环:for file in files_list:    with open(file, "a+") as fa:        fa.write("header")将所有文件名放入 files_list

牛魔王的故事

我能想到的最简单的是:for i in range(7):    f[i] = open("f" + chr(ord('a') + i) + ".txt", "a+")for i in range(7):    f[i].write("header")然后你就可以做你的事情了......

神不在的星期二

您可以创建上下文管理器来创建已打开文件的字典,然后遍历该字典以在所有文件中写入标题。使用字典而不是列表来确保您可以在主代码中独立可靠地使用文件一个可能的实现:from contextlib import contextmanager@contextmanagerdef 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")
随时随地看视频慕课网APP

相关分类

Python
我要回答