从两个文件同时读取不同数量的行

时间:2017-03-21 16:24:27

标签: python file parallel-processing

我正在寻找一种同时从两个大文件中读取而无需将整个数据存入内存的方法。我想从第一个文件中解析M行,第二个文件中有N行。对它有任何明智和记忆效率的解决方案吗?

到目前为止,我知道如何逐行同时读取两个文件。但我不知道是否可以扩展此代码以读取第一个文件中的4行和第二个文件中的1行。

from itertools import izip
with open("textfile1") as textfile1, open("textfile2") as textfile2: 
for x, y in izip(textfile1, textfile2):
    x = x.strip()
    y = y.strip()
    print("{0}\t{1}".format(x, y))

从这里开始,Read two textfile line by line simultaneously -python

2 个答案:

答案 0 :(得分:0)

只需打开文件并使用例如line = textfile1.readline()从其中一个文件中读取一行。

line将包含一个尾随换行符。当你返回一个空字符串时,你会看到你到了最后。

答案 1 :(得分:0)

那将从file1读取接下来的n行,然后在其他一些代码

中读取文件2中的下一行
def nextlines(number, file):
    n_items = []
    index = number
    while(index > 0):
        try:
            n_items += [next(file).strip()]
            index -= 1
        except StopIteration:
            break
    return n_items

n = 5
m = 7
l1 = []
l2 = []
with open('file.dat', 'r') as file1:
    with open('file.dat', 'r') as file2:
        #some code
        l1 = nextlines(n, file1)
        l2 = nextlines(m, file2)
        #some other code
        file2.close()
    file1.close()
print l1
print l2