Comment puis-je empêcher IDLE d'imprimer des listes géantes?
-
03-07-2019 - |
Question
Parfois, je travaille avec, par exemple, une liste de milliers d’articles dans IDLE, et l’imprime accidentellement sur le shell. Lorsque cela se produit, cela se bloque ou du moins ralentit considérablement. Comme vous pouvez l’imaginer, c’est extrêmement gênant. Y a-t-il un moyen de le faire, plutôt que d'imprimer le tout, de me donner un résumé [1, 2, ...]? Toute aide serait la bienvenue.
La solution
Comme ci-dessus, essayez une fonction d'impression personnalisée telle que:
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
Autres conseils
Utilisez plutôt IPython comme shell.
Vous pouvez utiliser la fonction d'impression personnalisée.
En Python 3, l’impression étant une fonction, vous devriez être en mesure de "substituer". il. (Je ne l'ai pas installé et je ne peux donc pas l'essayer pour en être sûr.) Probablement pas recommandé pour de vraies applications, mais si vous essayez simplement quelque chose, ce serait bien, je suppose.
Cela ressemblerait à quelque chose comme:
def myprint(*args):
# write the function as described by other people
print = myprint
L'extension Squeezer pour IDLE a été écrite dans ce but précis. D'après la description sur Pypi:
IDLE peut se bloquer si une sortie très longue est imprimée. Pour éviter cela, le Squeezer les extensions saisissent toute sortie de plus de 80 lignes de texte (configurable) et affiche une boîte rectangulaire à la place:
Squeezer et de nombreuses autres extensions IDLE sont inclus dans IdleX .