Python - 处理文件中的一大块行

时间:2016-10-20 10:25:23

标签: python arrays file

我有一个文件,每个文件包含x个值。 我需要能够从此文件中获取n个值,将它们放入一个数组中,将该数组传递给一个新进程,清除该数组,然后从该文件中获取另外n个值文件以提供给下一个过程。

我遇到的问题是当x是一个像12这样的值时,我试图给出,让我们说,每个进程的10个值。

第一个过程会让它的前10个值没问题,但是我在将剩下的2个值留给最后一个过程时遇到了麻烦。

如果,让我们说,你告诉程序从文件中给每个进程10个值,但文件只有1个,甚至9个值,也会出现问题。

当我在最后一组小于n

的值时,我需要知道

我想避免取出文件中的所有值并将其一次性存储在一个数组中,因为如果该文件中有数百万个值,我可能会遇到内存问题。

以下是我尝试过的一个例子:

chunk = 10
value_list = []
with open ('file.txt', 'r') as f:
    for value in f:
        value_list.append(value)
        if (len(value_list) >= chunk):
            print 'Got %d' % len(value_list)
            value_list = [] # Clear the list
            # Put array into new process

在这个示例中,这将捕获每10个,但是如果在文件中发生的事件少于10,则它将无法工作。

1 个答案:

答案 0 :(得分:2)

我在这种情况下通常只处理for循环后的最后一个(短)数组。例如,

chunk = 10
value_list = []
with open ('file.txt', 'r') as f:
    for value in f:
        if (len(value_list) >= chunk):
            print 'Got %d' % len(value_list)
            value_list = [] # Clear the list
            # Put array into new process
        value_list.append(value)
    # send left overs to new process
    if value_list:
        print 'Got %d' % len(value_list)
        # Put final array into new process