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
相关产品推荐
相关产品推荐

