Como posso parar IDLE de imprimir listas gigantes?
-
03-07-2019 - |
Pergunta
Às vezes eu vou estar trabalhando com, digamos, uma lista de milhares de itens em IDLE, e acidentalmente imprimi-lo para o shell. Quando isso acontece, ele trava ou pelo menos muito significaly desacelera IDLE. Como você pode imaginar, isso é extremamente inconveniente. Existe uma maneira de fazer isso, em vez de imprimir a coisa toda, me dê um resumidas [1, 2, ...] saída? Qualquer ajuda seria muito apreciada.
Solução
Como acima, tente uma função de impressão personalizado como:
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
Outras dicas
Use IPython como shell vez.
Você pode usar a função de impressão personalizada.
Em Python 3, uma vez que impressão é uma função, você deve ser capaz de "override"-lo. (Eu não tê-lo instalado, então não posso testá-lo para ter certeza.) Provavelmente não recomendado para aplicações reais, mas se você está apenas tentando as coisas, seria bom eu suponho.
Ele seria algo como:
def myprint(*args):
# write the function as described by other people
print = myprint
O Squeezer extensão para IDLE foi escrito para fazer exatamente isso. A partir da descrição de PyPI:
IDLE pode pendurar se a saída muito longo é impresso. Para evitar isso, o Espremedor extensões de pega qualquer saída de mais de 80 linhas de texto (configurável) e exibe uma caixa retangular em vez disso:
espremedor, e muitos outros ramais livres são incluídos na IdleX .