2009-10-23 6 views
21

Existe-t-il un moyen de coller un bloc de code dans IDLE? Coller ligne par ligne fonctionne, mais parfois je voudrais coller plusieurs lignes à la fois. Quand j'essaie, IDLE lit la première ligne et ignore le reste.Coller plusieurs lignes dans IDLE

>>> a = 1 
b = 2 
c = 3 

>>> 
>>> a 
1 
>>> b 

Traceback (most recent call last): 
    File "<pyshell#3>", line 1, in <module> 
    b 
NameError: name 'b' is not defined 

Répondre

21

Probablement pas la plus belle procédure, mais cela fonctionne:

cmds = ''' 

coller vos commandes, suivi par ''':

a = 1 
b = 2 
c = 3 
''' 

Alors exec(cmds) va les exécuter.

Ou plus directement,

exec(''' 

puis coller vos commandes, suivi par '''):

a = 1 
b = 2 
c = 3 
''') 

Il est juste un truc, peut-être il y a une façon plus officielle, élégante.

+1

qui fonctionne, mais j'espérais vraiment quelque chose de plus élégant. Il est assez courant de coller un tas de lignes dans IDLE. Tester des parties de code à partir d'un EDI ou des éléments en cours d'affichage sur SO ou autre. – foosion

+1

Oui, j'ai souvent rencontré le même problème et je me suis posé la même question ... Il en est de même lorsque vous collez une partie indentée du code, "résolu" en tapant "si vrai:" puis en collant le code. Un peu d'un truc sale ;-) – RedGlyph

+0

en utilisant pyscripter .. copier le code de n'importe où dire une fonction ... et puis faites un clic droit dans l'interpréteur ... choisissez "coller et exécuter". et cela fonctionnera bien pour la pâte multiligne. – ihightower

6

IdleX fournit l'extension PastePyShell.py pour IDLE qui permet de coller plusieurs lignes dans le shell pour exécution.