You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何按指定大小读取文件片段并写入新文件?

精确读取指定字节数的文件内容方案

嘿,我懂你要的是字节级精确的文件读取需求——linecache确实是按行来处理的,完全没法满足这种精准到MB级的读取要求,咱们换个思路用Python原生的文件操作来解决,简单又靠谱。

核心思路是直接操作文件的字节流,避开文本模式下的编码/换行符转换干扰,确保读取的字节数完全准确。这里给你写好代码,直接就能用:

SOURCE_FILE = "你的10GB大文件路径.txt"
TARGET_FILE = "输出的25MB文件.txt"
# 把25MB转换成字节数:25 * 1024KB * 1024字节 = 26214400字节
EXACT_SIZE = 25 * 1024 * 1024

# 用二进制模式打开文件,保证字节级操作的准确性
with open(SOURCE_FILE, "rb") as source_file, open(TARGET_FILE, "wb") as target_file:
    # 如果你需要从文件中间某个位置开始读取,比如跳过前3GB,就加这行:
    # source_file.seek(3 * 1024 * 1024 * 1024)
    
    # 一次性读取精确的25MB字节内容
    extracted_content = source_file.read(EXACT_SIZE)
    # 写入目标文件
    target_file.write(extracted_content)

为啥这个方案靠谱?

  • 二进制模式:用rb/wb模式操作时,Python不会对文件内容做任何编码转换或换行符替换(比如Windows的\r\n不会被转成\n),完全按原始字节处理,确保读取的大小绝对精准。
  • 一次性读取:read(EXACT_SIZE)会直接读取指定字节数的内容,只要源文件剩余大小≥25MB,就能拿到刚好25MB的内容;如果文件剩下的不足,就会读取剩余全部(不过你的源文件是10GB,肯定够)。
  • 自动资源管理:with上下文管理器会自动帮你关闭文件,不用担心忘记关闭导致的资源泄漏问题。

之前用linecache不行的原因也很明确:它是为按行读取设计的,只能按行号返回内容,没法精确控制总字节数——毕竟每行的长度都不一样,凑出来的字节数肯定没法刚好是25MB。

内容的提问来源于stack exchange,提问作者muc777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:01:11