[英]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.