我在名为paths
我希望能够通过读取每个文件的第一行,使用这个n元组的数据做一些事情,然后移动每个文件的第二行。 path
中的文件对象数是任意的。
这可能吗?
答案 0 :(得分:4)
import itertools
for line_tuple in itertools.izip(*files):
whatever()
我使用zip
,但这会将文件的全部内容读入内存。请注意,files
应该是文件对象的列表;我不确定“文件处理程序列表”是什么意思。
答案 1 :(得分:4)
这取决于它实际上是多么“武断”。只要该数字小于您的操作系统限制,itertools.izip
就可以正常工作(或itertools.izip_longest
视情况而定)。
files = [open(f) for f in filenames]
for lines in itertools.izip(*files):
# do something
for f in files:
f.close()
如果你的操作系统可以容纳多个文件,那么你就不幸了(至少就一个简单的解决方案而言)。
答案 2 :(得分:0)
第一个想法突然出现在我的脑海中,下面的代码似乎过于简单
fp_list = []
for file in path_array:
fp = open(file)
fp_list.append(fp)
line_list = []
for fp in fp_list:
line = fp.readline()
line_list.append(line)
## you code here process the line_list
for fp in fp_list:
fp.close()