繁体   English   中英

Python-处理文件中的几行

[英]Python - process a chunk of lines in a 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个文件,它将无法正常工作。

在这种情况下,我通常要做的只是处理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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM