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

Is there any limitation for python pprint printing large data?

提问人:k9wan 提问时间:10/3/2023 最后编辑:k9wan 更新时间:10/3/2023 访问量:59

问:

对不起,如果我的英语不好,我的母语是韩语。

我试图将一个大列表(其大小类似于)预打印到文本文件中。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 没有打印所有列表呢?是否有一些大小限制? 或者我的RAM等不够用?

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

python-3.x 数据大 文件 pprint

评论

5赞 wRAR 10/3/2023
您是否在程序关闭文件后查看该文件?
0赞 JonSG 10/3/2023
如果可以的话,我可能会使用或在一个大名单上。不过,就其价值而言,这在本地对我有用json.dump()f.write()pprint.pprint(list(range(1_000_000)), f)
0赞 Daviid 10/3/2023
你能添加一个最小的可重现示例来构建一个让你失望的数组吗?是对象列表吗?字典?字符串?
0赞 k9wan 10/3/2023
@Daviid它是 2d 列表,是 95,是 24,并且像 是 str 这样的元素,长度为 24,例如len(lst)len(lst[0])lst[0][0]'000000000111000000000000'
0赞 Daviid 10/3/2023
我这边没有错误,你确定它只是 95 个 24 个字符字符串的 24 个子列表吗?

答:

0赞 Daviid 10/3/2023 #1

我刚刚试过

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()