为了账号安全,请及时绑定邮箱和手机立即绑定

在多个文件中写入同一行的简洁方法 - Python

在多个文件中写入同一行的简洁方法 - Python

哆啦的时光机 2022-12-20 14:36:20
我有几个打开的文件。现在,我需要在所有这些中写同一行。我当前的代码如下,但它不优雅且非常重复。有没有办法在更少的行中做到这一点?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")在程序的其余部分(未显示),我以不同方式处理每个文件,向每个文件附加不同的信息。如果这篇文章重复,我很抱歉!
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

只需使用 for 循环:


for file in files_list:

    with open(file, "a+") as fa:

        fa.write("header")

将所有文件名放入 files_list


查看完整回答
反对 回复 2022-12-20
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

我能想到的最简单的是:


for i in range(7):

    f[i] = open("f" + chr(ord('a') + i) + ".txt", "a+")


for i in range(7):

    f[i].write("header")

然后你就可以做你的事情了......


查看完整回答
反对 回复 2022-12-20
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您可以创建上下文管理器来创建已打开文件的字典,然后遍历该字典以在所有文件中写入标题。


使用字典而不是列表来确保您可以在主代码中独立可靠地使用文件


一个可能的实现:


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")


查看完整回答
反对 回复 2022-12-20
  • 3 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信