簡體   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