Come posso impedire a IDLE di stampare elenchi giganti?
-
03-07-2019 - |
Domanda
A volte lavorerò con, per esempio, un elenco di migliaia di elementi in IDLE, e lo staccherò accidentalmente sulla shell. Quando ciò accade, si arresta in modo anomalo o almeno molto significativo rallenta IDLE. Come puoi immaginare, questo è estremamente scomodo. C'è un modo per farlo, piuttosto che stampare l'intera cosa, solo darmi un risultato riassunto [1, 2, ...]? Qualsiasi aiuto sarebbe molto apprezzato.
Soluzione
Come sopra, prova una funzione di stampa personalizzata come:
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
Altri suggerimenti
Usa IPython come shell invece.
È possibile utilizzare la funzione di stampa personalizzata.
In Python 3, poiché la stampa è una funzione, dovresti essere in grado di "sostituire" " esso. (Non l'ho installato, quindi non posso provarlo per esserne sicuro.) Probabilmente non è raccomandato per applicazioni reali, ma se stai solo provando le cose, va bene suppongo.
Sarebbe simile a:
def myprint(*args):
# write the function as described by other people
print = myprint
L'estensione Squeezer per IDLE è stata scritta proprio per questo. Dalla descrizione su Pypi:
IDLE può bloccarsi se viene stampato un output molto lungo. Per evitarlo, lo Squeezer estensioni cattura qualsiasi output più lungo di 80 righe di testo (configurabile) e visualizza invece una casella rettangolare:
Squeezer e molte altre estensioni IDLE sono incluse in IdleX .