如何在python中并行迭代任意数量的文件?
我在名为如何在python中并行迭代任意数量的文件?,python,loops,Python,Loops,我在名为路径的列表中有一个文件对象列表 我希望能够遍历并读取每个文件的第一行,对这个n元组数据做一些处理,然后移动到每个文件的第二行。path中的文件对象数是任意的 这可能吗 import itertools for line_tuple in itertools.izip(*files): whatever() 我会使用zip,但这会将文件的全部内容读入内存。请注意,文件应该是文件对象的列表;我不知道你所说的“文件处理程序列表”是什么意思。这取决于它的“任意性”。只要数量小于操作系统
路径的列表中有一个文件对象列表
我希望能够遍历并读取每个文件的第一行,对这个n元组数据做一些处理,然后移动到每个文件的第二行。path
中的文件对象数是任意的
这可能吗
import itertools
for line_tuple in itertools.izip(*files):
whatever()
我会使用zip
,但这会将文件的全部内容读入内存。请注意,文件
应该是文件对象的列表;我不知道你所说的“文件处理程序列表”是什么意思。这取决于它的“任意性”。只要数量小于操作系统的限制,那么itertools.izip
就可以正常工作(或者itertools.izip\u longest
,视情况而定)
如果你的文件比你的操作系统允许你打开的文件多,那么你就不走运了(至少就简单的解决方案而言)。我想到的第一个想法是下面的代码,它看起来太简单了
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()
python3.x兼容性说明:
itertools.izip
->zip
和itertools.izip\u longest
->itertools.zip\u longest
。我的意思是说“文件描述符”或“文件对象”,就像你说的那样。我编辑了我的原始文件,并将“文件处理程序”更改为“文件对象”。谢谢
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()