Comment exécuter un script python à partir du shell interactif IDLE?
Ce qui suit génère une erreur:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
dans une fenêtre shell IDLE et que cela ne fonctionne pas.
Comment exécuter un script python à partir du shell interactif IDLE?
Ce qui suit génère une erreur:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
dans une fenêtre shell IDLE et que cela ne fonctionne pas.
Réponses:
Python3 :
exec(open('helloworld.py').read())
Si votre fichier n'est pas dans le même répertoire:
exec(open('./app/filename.py').read())
Voir https://stackoverflow.com/a/437857/739577 pour passer des variables globales / locales.
Dans les versions obsolètes de Python
Fonction intégrée Python2 : execfile
execfile('helloworld.py')
Il ne peut normalement pas être appelé avec des arguments. Mais voici une solution de contournement:
import sys
sys.argv = ['helloworld.py', 'arg'] # argv[0] should still be the script name
execfile('helloworld.py')
Obsolète depuis 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
Avec des arguments:
os.popen('python helloworld.py arg').read()
Utilisation avancée : sous - processus
import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout
Avec des arguments:
subprocess.call(['python', 'helloworld.py', 'arg'])
Lisez la documentation pour plus de détails :-)
Testé avec ce basique helloworld.py
:
import sys
if len(sys.argv) > 1:
print(sys.argv[1])
exec
pour Python3
La fenêtre du shell IDLE n'est pas la même chose qu'un shell de terminal (par exemple en cours d'exécution sh
ou bash
). C'est plutôt comme être dans l'interpréteur interactif Python ( python -i
). Le moyen le plus simple d'exécuter un script dans IDLE est d'utiliser la Open
commande du File
menu (cela peut varier un peu selon la plate-forme que vous exécutez) pour charger votre fichier de script dans une fenêtre d'éditeur IDLE, puis d'utiliser la commande Run
-> Run Module
(raccourci F5).
sys.argv
au tout début du programme, par exemple, sous le passe- if __name__ == "__main__"
partout habituel .
Run
-> Run with Customized...
(raccourci Shift + F5) et une fenêtre contextuelle s'ouvrira où vous pourrez fournir vos arguments. Malheureusement, il ne les mémorise pas actuellement, vous les collerez donc à chaque exécution.
Essaye ça
import os
import subprocess
DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')
subprocess.call(['python', DIR])
execFile('helloworld.py')
fait le travail pour moi. Une chose à noter est de saisir le nom de répertoire complet du fichier .py s'il ne se trouve pas dans le dossier Python lui-même (au moins c'est le cas sous Windows)
Par exemple, execFile('C:/helloworld.py')
Par exemple:
import subprocess
subprocess.call("C:\helloworld.py")
subprocess.call(["python", "-h"])
subprocess.call(r'c:\path\to\something.py')
ne fonctionne pas pour moi. OSError: [WinError 193]% 1 n'est pas une application Win32 valide
En IDLE, les travaux suivants: -
import helloworld
Je ne sais pas trop pourquoi cela fonctionne, mais c'est le cas.
Pour exécuter un script python dans un shell python tel que Idle ou dans un shell Django, vous pouvez faire ce qui suit en utilisant la fonction exec (). Exec () exécute un argument d'objet code. Un objet de code en Python est simplement du code Python compilé. Vous devez donc d'abord compiler votre fichier de script, puis l'exécuter en utilisant exec (). Depuis votre shell:
>>>file_to_compile = open('/path/to/your/file.py').read() >>>code_object = compile(file_to_compile, '<string>', 'exec') >>>exec(code_object)
J'utilise Python 3.4. Voir les documents de compilation et d' exécution pour des informations détaillées.
J'ai testé ceci et ça marche un peu:
exec(open('filename').read()) # Don't forget to put the filename between ' '
Sur l'environnement Windows, vous pouvez exécuter le fichier py sur la ligne de commande du shell Python3 avec la syntaxe suivante:
exec (open ('chemin absolu vers nom_fichier'). read ())
Ci-dessous explique comment exécuter un simple fichier helloworld.py à partir de la ligne de commande du shell python
Emplacement du fichier: C: /Users/testuser/testfolder/helloworld.py
Contenu du fichier: impression ("bonjour le monde")
Nous pouvons exécuter ce fichier sur Python3.7 Shell comme ci-dessous:
>>> 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
Il existe une autre alternative (pour Windows) -
import os
os.system('py "<path of program with extension>"')
Dans une console python, on peut essayer les 2 façons suivantes.
sous le même répertoire de travail,
1. >> importer helloworld
# si vous avez une variable x , vous pouvez l'imprimer en IDLE.
>> helloworld.x
# si vous avez une fonction func , vous pouvez également l'appeler comme ceci.
>> helloworld.func ()
2. >> runfile ("./ helloworld.py")
helloworld.py
ressemble?