У меня есть несколько объектов, которые мне нужно распечатать на терминал (для отладки). Нормальная функция print
почти идеальна, за исключением того, что некоторые объекты слишком велики, поэтому print
создаст миллионы строк вывода. Я хотел бы создать функцию, которая делает то, что делает print
, за исключением того, что вывод усечен после предопределенного количества символов, заменяя остальные на ...
.Ограничение вывода на печать
Каков хороший способ сделать это?
Обратите внимание, что производительность является проблемой, поэтому в идеале я бы предпочел не сохранять строку размера гигабайта, а затем взять из нее первые несколько символов; Аналогично, pprint
- это немного проблема, поскольку он сортирует ключи в словарях (и с миллионами ключей занимает некоторое время).
Пример:
obj = [ [1, 2, 3], list(range(1000000)) ]
my_print(obj, 20)
# should output:
# [[1, 2, 3], [0, 1, 2...
Python 3, если это имеет значение.
Если у вас есть словари с гнездом, возможно, ['pprint.pprint'] (https://docs.python.org/3.4/library/pprint.html) с набором параметров' depth' поможет? – myaut
@myaut это не совсем то, что я искал, но это действительно полезно! Благодаря! – max
Вы можете определить свое собственное представление с помощью ['reprlib'] (https://docs.python.org/3.4/library/reprlib.html). – m0nhawk