簡體   English   中英

尋找在 python 中按行數拆分大型文本文件的有效方法的想法

[英]Looking for ideas for efficient way to split large text file by number of lines in python

我目前正在嘗試拆分大於 200GB 的大文件。 目標是將大文件分成更小的塊。 我編寫了以下代碼,它適用於較小的文件。 但是,在較大的文件中,我的計算機正在重新啟動。 在這一點上,我無法弄清楚這是我的硬件問題(即處理能力)還是其他一些原因。 如果有有效的方法來做同樣的事情,也會尋找想法。

  def split(source, target, lines):
      index = 0
      block = 0
      if not os.path.exists(target):
          os.mkdir(target)
      with open(source, 'rb') as s:
          chunk = s.readlines()
          while block < len(chunk):
              with open(target+(f'file_{index:04d}.txt'), 'wb') as t:
                  t.writelines(chunk[block: block+lines])
              index+=1
              block+=lines

殺死它的是s.readlines() ,因為它會嘗試將其全部加載到 memory 中。

你可以做類似的事情

with open("largeFile",'rb') as file:
    while True:
        data = file.read(1024) //blocksize

file.read()僅采用指定的塊大小,這應該可以避免您當前遇到的問題。

編輯:

我不聰明,我錯過了你標題中的“文本文件”部分,對不起。

在這種情況下,使用file.readline()而不是file.readlines()就足夠了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM