Come eseguo uno script python dall'interno della shell interattiva IDLE?
Quanto segue genera un errore:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
in una finestra della shell IDLE e che non funzioni.
Come eseguo uno script python dall'interno della shell interattiva IDLE?
Quanto segue genera un errore:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
in una finestra della shell IDLE e che non funzioni.
Risposte:
Python3 :
exec(open('helloworld.py').read())
Se il tuo file non si trova nella stessa directory:
exec(open('./app/filename.py').read())
Vedere https://stackoverflow.com/a/437857/739577 per il passaggio di variabili globali / locali.
Nelle versioni deprecate di Python
Funzione incorporata di Python2 : execfile
execfile('helloworld.py')
Normalmente non può essere chiamato con argomenti. Ma ecco una soluzione alternativa:
import sys
sys.argv = ['helloworld.py', 'arg'] # argv[0] should still be the script name
execfile('helloworld.py')
Deprecato dal 2.6: popen
import os
os.popen('python helloworld.py') # Just run the program
os.popen('python helloworld.py').read() # Also gets you the stdout
Con argomenti:
os.popen('python helloworld.py arg').read()
Utilizzo avanzato : sottoprocesso
import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout
Con argomenti:
subprocess.call(['python', 'helloworld.py', 'arg'])
Leggi i documenti per i dettagli :-)
Testato con questa base helloworld.py
:
import sys
if len(sys.argv) > 1:
print(sys.argv[1])
exec
per Python3
La finestra della shell IDLE non è la stessa di una shell di terminale (ad esempio in esecuzione sh
o bash
). Piuttosto, è proprio come essere nell'interprete interattivo Python ( python -i
). Il modo più semplice per eseguire uno script in IDLE è usare il Open
comando dal File
menu (questo può variare leggermente a seconda della piattaforma in esecuzione) per caricare il file di script in una finestra dell'editor IDLE e quindi utilizzare il comando Run
-> Run Module
(scorciatoia F5).
sys.argv
all'inizio del programma, ad esempio, sotto il solito if __name__ == "__main__"
boilerplate.
Run
-> Run with Customized...
(scorciatoia Maiusc + F5) e si aprirà un popup in cui puoi fornire i tuoi argomenti. Sfortunatamente al momento non li ricorda, quindi li incollerai ad ogni corsa.
Prova questo
import os
import subprocess
DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')
subprocess.call(['python', DIR])
execFile('helloworld.py')
fa il lavoro per me. Una cosa da notare è inserire il nome completo della directory del file .py se non è nella stessa cartella Python (almeno questo è il caso su Windows)
Per esempio, execFile('C:/helloworld.py')
Per esempio:
import subprocess
subprocess.call("C:\helloworld.py")
subprocess.call(["python", "-h"])
subprocess.call(r'c:\path\to\something.py')
Non funziona per me. OSError: [WinError 193]% 1 non è un'applicazione Win32 valida
In IDLE, funziona quanto segue: -
import helloworld
Non so molto sul perché funzioni, ma lo fa ..
Per eseguire uno script python in una shell python come Idle o in una shell Django è possibile eseguire le seguenti operazioni utilizzando la funzione exec (). Exec () esegue un argomento oggetto codice. Un oggetto codice in Python è semplicemente codice Python compilato. Quindi devi prima compilare il tuo file di script e poi eseguirlo usando exec (). Dal tuo guscio:
>>>file_to_compile = open('/path/to/your/file.py').read() >>>code_object = compile(file_to_compile, '<string>', 'exec') >>>exec(code_object)
Sto usando Python 3.4. Vedere i documenti di compilazione ed esecuzione per informazioni dettagliate.
L'ho testato e funziona:
exec(open('filename').read()) # Don't forget to put the filename between ' '
In ambiente Windows, puoi eseguire il file py sulla riga di comando della shell Python3 con la seguente sintassi:
exec (open ('percorso assoluto a nome_file'). read ())
Di seguito viene spiegato come eseguire un semplice file helloworld.py dalla riga di comando della shell python
Posizione del file: C: /Users/testuser/testfolder/helloworld.py
Contenuto del file: stampa ("ciao mondo")
Possiamo eseguire questo file su Python3.7 Shell come di seguito:
>>> import os
>>> abs_path = 'C://Users/testuser/testfolder'
>>> os.chdir(abs_path)
>>> os.getcwd()
'C:\\Users\\testuser\\testfolder'
>>> exec(open("helloworld.py").read())
hello world
>>> exec(open("C:\\Users\\testuser\\testfolder\\helloworld.py").read())
hello world
>>> os.path.abspath("helloworld.py")
'C:\\Users\\testuser\\testfolder\\helloworld.py'
>>> import helloworld
hello world
C'è un'altra alternativa (per Windows):
import os
os.system('py "<path of program with extension>"')
In una console Python, si possono provare i seguenti 2 modi.
nella stessa directory di lavoro,
1. >> importa helloworld
# se hai una variabile x , puoi stamparla in IDLE.
>> helloworld.x
# se hai una funzione func , puoi anche chiamarla in questo modo.
>> helloworld.func ()
2. >> runfile ("./ helloworld.py")
helloworld.py
aspetto ha?