在多个文件中写同一行的简洁方法 - 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的主要内容,如果未能解决你的问题,请参考以下文章

pythonp文件转m文件

Mysql锁机制--概念分类及基础命令

在一行中写一个 Add Row 和 NewRow

如何运行visual c++下多个cpp文件,就是在同一个项目下建立了多个.cpp源文件,但是无法生成,运行第二个

pythonp爬虫 爬取百度音乐

java 一个文件中写多个class