如何将一系列文件作为一个文件读取(文件输入缺少读取)?
How to read a sequence of files as one file (fileinput lacks read)?
我需要读取一系列文件,fileinput
似乎正是我所需要的,但后来我意识到它缺少 read
方法。
- 执行此操作的规范方法(如果有)是什么? (显式连接会很浪费。)
- 是否存在
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))
我需要读取一系列文件,fileinput
似乎正是我所需要的,但后来我意识到它缺少 read
方法。
- 执行此操作的规范方法(如果有)是什么? (显式连接会很浪费。)
- 是否存在
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))