Как я могу запретить IDLE печатать гигантские списки?

StackOverflow https://stackoverflow.com/questions/609190

Вопрос

Иногда я работаю, скажем, со списком из тысяч элементов в IDLE и случайно распечатываю его в оболочку.Когда это происходит, он вылетает или, по крайней мере, очень существенно тормозит IDLE.Как вы понимаете, это крайне неудобно.Есть ли способ сделать это, вместо того, чтобы печатать все это, просто дать мне обобщенный результат [1, 2,...]?Любая помощь приветствуется.

Это было полезно?

Решение

Как указано выше, попробуйте пользовательскую функцию печати, например:

def my_print(obj):  
    if hasattr(obj, '__len__') and len(obj) > 100:  
        print '... omitted object of %s with length %d ...' % (type(obj), len(obj))  
    else: print obj

Другие советы

Использовать IPython вместо этого как оболочка.

Вы можете использовать пользовательскую функцию печати.

В Python 3, поскольку print — это функция, вы можете «переопределить» ее.(Он у меня не установлен, поэтому я не могу опробовать его, чтобы убедиться.) Вероятно, не рекомендуется для реальных приложений, но если вы просто пробуете что-то, я думаю, все будет в порядке.

Это будет что-то вроде:

def myprint(*args):
    # write the function as described by other people
print = myprint

А Соковыжималка расширение для IDLE было написано именно для этого.Из описания на Pypi:

IDLE может зависнуть, если печатается очень длинный вывод.Чтобы избежать этого, расширения Squeezer улавливает любой вывод более 80 строк текста (настраиваемый) и вместо этого отображает прямоугольную коробку:

Squeezer и многие другие расширения IDLE включены в состав IdleX.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top