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

Python中pickle.load加载地形网格后控制台输出不完整求助

解决控制台输出100×100网格截断的问题

你的猜测完全正确——控制台的输出长度/缓冲区限制导致了网格数据显示不全,pickle的保存和加载流程本身是正常的,数据并没有丢失。以下是几种实用的解决办法:

1. 先验证数据完整性(优先操作)

在打印完整数据前,先输出网格的行列数,确认数据确实是100×100:

def import_data(self):
    with open("save.dat", "rb") as fin:
        a = pickle.load(fin)
        print("Import successful!")
        # 验证网格尺寸
        print(f"网格尺寸: {len(a)}行 × {len(a[0])}列")
        # 可选:打印前3行和后3行做抽样检查
        print("前3行数据:")
        for row in a[:3]:
            print(row)
        print("后3行数据:")
        for row in a[-3:]:
            print(row)

如果输出显示是100×100,说明数据已经完整加载,只是显示问题。

2. 将完整数据写入文本文件查看

把网格数据写入一个文本文件,用编辑器打开就能看到全部内容:

def import_data(self):
    with open("save.dat", "rb") as fin:
        a = pickle.load(fin)
        print("Import successful!")
        print(f"网格尺寸: {len(a)}行 × {len(a[0])}列")
        # 写入文本文件
        with open("full_grid.txt", "w", encoding="utf-8") as f:
            for idx, row in enumerate(a):
                f.write(f"第{idx+1}行: {row}\n")
        print("完整网格数据已保存到full_grid.txt")

3. 使用pprint模块优化控制台输出

pprint模块可以更智能地格式化大结构数据,通过设置width参数避免自动截断:

import pprint

def import_data(self):
    with open("save.dat", "rb") as fin:
        a = pickle.load(fin)
        print("Import successful!")
        # 设置足够宽的宽度,让每行数据完整显示
        pprint.pprint(a, width=2000)

4. 调整终端输出缓冲区

如果一定要在控制台查看,可手动调整终端的显示限制:

  • Windows命令行:执行mode con: lines=200增加可显示的行数
  • Linux/macOS终端:在终端设置中找到「滚动缓冲区」,将最大行数调大(比如设为10000)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:25:59