如何将一系列文件作为一个文件读取(文件输入缺少读取)?

How to read a sequence of files as one file (fileinput lacks read)?

我需要读取一系列文件,fileinput 似乎正是我所需要的,但后来我意识到它缺少 read 方法。

  1. 执行此操作的规范方法(如果有)是什么? (显式连接会很浪费。)
  2. 是否存在 fileinput 不支持 read 的已知技术或安全原因?

不是重复项。

因为它们会被一次读入内存,你可以使用 io.StringIO class

import io


class Filelike:
    def __init__(self, filenames):
        self.data = io.StringIO()
        for filename in filenames:
            with open(filename) as file:
                self.data.write(file.read())

        self.data.seek(0)  # Rewind.

    def read(self):
        return self.data.getvalue()


if __name__ == '__main__':

    filenames = ['file1.txt', 'file2.txt', ...]
    filelike = Filelike(filenames)

    # process lines
    for line in filelike.read().splitlines():
        print(repr(line))