python pprint打印大数据有什么限制吗?

问题描述 投票:0回答:2

抱歉,如果我的英语不好,我以韩语为母语。

我试图将一个大列表打印到一个文本文件中,其大小类似于

len(repr(lst)) == 64xxx

但是当我尝试类似的事情时

from pprint import pprint as p

f = open(fname, mode='a+')
p(a_lst, f)

只打印了80%左右的清单,剩下的20%被删减了。 我还尝试将列表减半并调用 pprint 两次,但这也不起作用。

所以我不得不这样做

print(a_list, file=f)

这有效。但为什么 pprint 没有打印所有列表呢?有尺寸限制吗? 或者也许是我的内存或其他不够?

编辑:我再次尝试使用 pprint,它有效但无法重现相同的结果(剪切结果)。我认为这可能是暂时的错误,但我无法找出错误的原因。

python python-3.x large-data large-files pprint
2个回答
0
投票

我刚刚尝试过

import random

# Define the dimensions of the 2D list
first_level = 95
second_level = 24
lst = []

for _ in range(first_level):
    second_level_list = []
    for _ in range(second_level):
        # Generate a random binary string of length num_cols
        random_string = ''.join(random.choice('01') for _ in range(24))
        
        # Append the random string as a list to lst
        second_level_list.append([random_string])
    lst.append(second_level_list)

from pprint import pprint as p

f = open("output.txt", mode='a+')
p(lst, f)

并且没有收到任何错误。

即使不执行操作,完整数组也在输出文件中

f.close()


-1
投票

您观察到的行为与 pprint 本身或系统 RAM 的大小限制没有直接关系。相反,它可能与 pprint 函数的实现方式以及它如何与文件对象一起工作有关。

试试这个

from pprint import pformat

with open(fname, mode='a+') as f:
    formatted_str = pformat(a_lst, width=200)  # or adjust width as necessary
    f.write(formatted_str)
© www.soinside.com 2019 - 2024. All rights reserved.