【问题标题】:Python: how to get part of file by sizePython:如何按大小获取文件的一部分
【发布时间】:2026-01-20 12:50:01
【问题描述】:

我想从带有行的 txt 文件 (10GB) 中仅读取一部分(而不是块)并将它们写入另一个文件。 该部分的大小应该正好是 25MB。

我试过linecache.getlines,但不是很准确。 谢谢。

【问题讨论】:

  • 与将正确的 25MB 写入输出文件的重要性相比,读取 25MB 的重要性有多重要?
  • 基本上可以使用*.com/questions/50062474/…这里的方法,`import pandas as pd import os df_chunked = pd.read_csv("myLarge.csv", chunksize=30000)
  • 如果这是一个带行的文件,你不能用for line in file_handler:吗?
  • @ScottHunter aha,写入输出文件会更重要

标签: python python-3.x split size large-files


【解决方案1】:

执行拆分的一种简单方法是使用 read(),假设每个字符都是一个字节。

for nameadd in range(10*1024/25):
    f = open('fname.txt')
    saveTxt = f.read(25*(1024**2))
    fSave = open(str(nameadd)+'fname.txt','w')
    fSave.write('%s',saveTxt)

【讨论】:

    【解决方案2】:

    这里已经描述了Lazy Method for Reading Big File in Python?

    def read_in_chunks(file_object, chunk_size=25*1024*1024):
    """Lazy function (generator) to read a file piece by piece.
    Default chunk size: 25MB."""
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data 
    f = open('really_big_file.dat')
    for piece in read_in_chunks(f):
       process_data(piece)
    

    【讨论】: