2009-10-23 7 views
21

C'è un modo per incollare un blocco di codice in IDLE? Incollare linea per linea funziona, ma a volte mi piacerebbe incollare più righe contemporaneamente. Quando provo, IDLE legge la prima riga e ignora il resto.Incollare più righe in 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 

risposta

21

Probabilmente non è il più bello procedura, ma questo funziona:

cmds = ''' 

incollare i comandi, seguite da ''':

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

Poi exec(cmds) sarà eseguirli.

O, più direttamente,

exec(''' 

quindi incollare i comandi, seguite da '''):

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

E 'solo un trucco, forse c'è un altro ufficiale, modo elegante.

+1

che funziona, ma speravo davvero di qualcosa di più elegante. È piuttosto comune incollare un sacco di linee in IDLE. Test di parti di codice da un IDE o roba in esecuzione pubblicata su SO o qualsiasi altra cosa. – foosion

+1

Sì, spesso mi sono imbattuto nello stesso problema e mi sono posto la stessa domanda ... Lo stesso accade quando si incolla una parte di codice rientrata, "risolto" digitando "se True:" quindi incollando il codice. Un po 'di trucco sporco ;-) – RedGlyph

+0

utilizzando la scala di grigi ... copiare il codice da qualsiasi parte dice una funzione ... e poi fare clic con il tasto destro nell'interprete ... scegliere "incolla ed esegui". e questo funzionerà bene per la pasta multilinea. – ihightower

6

IdleX fornisce l'estensione PastePyShell.py per IDLE che consente di incollare più righe nella shell per l'esecuzione.