Wie führe ich ein Python-Skript in der interaktiven IDLE-Shell aus?
Folgendes wirft einen Fehler aus:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
ein IDLE-Shell-Fenster ein und das funktioniert nicht.
Wie führe ich ein Python-Skript in der interaktiven IDLE-Shell aus?
Folgendes wirft einen Fehler aus:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
ein IDLE-Shell-Fenster ein und das funktioniert nicht.
Antworten:
Python3 :
exec(open('helloworld.py').read())
Wenn sich Ihre Datei nicht im selben Verzeichnis befindet:
exec(open('./app/filename.py').read())
Informationen zum Übergeben globaler / lokaler Variablen finden Sie unter https://stackoverflow.com/a/437857/739577 .
In veralteten Python-Versionen
Python2 Integrierte Funktion: execfile
execfile('helloworld.py')
Es kann normalerweise nicht mit Argumenten aufgerufen werden. Aber hier ist eine Problemumgehung:
import sys
sys.argv = ['helloworld.py', 'arg'] # argv[0] should still be the script name
execfile('helloworld.py')
Veraltet seit 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
Mit Argumenten:
os.popen('python helloworld.py arg').read()
Vorabverwendung: Unterprozess
import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout
Mit Argumenten:
subprocess.call(['python', 'helloworld.py', 'arg'])
Lesen Sie die Dokumente für Details :-)
Getestet mit diesem Basic helloworld.py
:
import sys
if len(sys.argv) > 1:
print(sys.argv[1])
exec
für Python3
Das IDLE-Shell-Fenster ist nicht dasselbe wie eine Terminal-Shell (z . B. running sh
oder bash
). Es ist eher so, als wäre man im interaktiven Python-Interpreter ( python -i
). Der einfachste Weg, ein Skript in IDLE auszuführen, besteht darin, den Open
Befehl aus dem File
Menü zu verwenden (dies kann je nach der von Ihnen ausgeführten Plattform etwas variieren), um Ihre Skriptdatei in ein IDLE-Editorfenster zu laden und dann den Befehl Run
-> Run Module
(Verknüpfung) zu verwenden F5).
sys.argv
Beginn des Programms manuell zu initialisieren , z. B. unter der üblichen if __name__ == "__main__"
Boilerplate.
Run
-> Run with Customized...
(Tastenkombination Umschalt + F5). Ein Popup wird geöffnet, in dem Sie Ihre Argumente angeben können. Leider werden sie derzeit nicht gespeichert, sodass Sie sie bei jedem Lauf einfügen.
Versuche dies
import os
import subprocess
DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')
subprocess.call(['python', DIR])
execFile('helloworld.py')
macht den Job für mich. Beachten Sie, dass Sie den vollständigen Verzeichnisnamen der .py-Datei eingeben müssen, wenn diese nicht im Python-Ordner selbst enthalten ist (zumindest unter Windows).
Beispielsweise, execFile('C:/helloworld.py')
Beispielsweise:
import subprocess
subprocess.call("C:\helloworld.py")
subprocess.call(["python", "-h"])
subprocess.call(r'c:\path\to\something.py')
funktioniert bei mir nicht OSError: [WinError 193]% 1 ist keine gültige Win32-Anwendung
In IDLE funktioniert Folgendes: -
import helloworld
Ich weiß nicht viel darüber, warum es funktioniert, aber es funktioniert ..
Um ein Python-Skript in einer Python-Shell wie Idle oder in einer Django-Shell auszuführen, können Sie mit der Funktion exec () Folgendes tun. Exec () führt ein Codeobjektargument aus. Ein Codeobjekt in Python ist einfach kompilierter Python-Code. Sie müssen also zuerst Ihre Skriptdatei kompilieren und dann mit exec () ausführen. Aus deiner Muschel:
>>>file_to_compile = open('/path/to/your/file.py').read() >>>code_object = compile(file_to_compile, '<string>', 'exec') >>>exec(code_object)
Ich benutze Python 3.4. Ausführliche Informationen finden Sie in den Kompilierungs- und Exec- Dokumenten.
Ich habe das getestet und es klappt irgendwie:
exec(open('filename').read()) # Don't forget to put the filename between ' '
In einer Windows-Umgebung können Sie py-Dateien in der Python3-Shell-Befehlszeile mit der folgenden Syntax ausführen:
exec (open ('absoluter Pfad zu Dateiname'). read ())
Im Folgenden wird erläutert, wie Sie eine einfache Datei helloworld.py über die Befehlszeile der Python-Shell ausführen
Dateispeicherort: C: /Users/testuser/testfolder/helloworld.py
Dateiinhalt: Drucken ("Hallo Welt")
Wir können diese Datei auf der Python3.7-Shell wie folgt ausführen:
>>> 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
Es gibt noch eine Alternative (für Windows) -
import os
os.system('py "<path of program with extension>"')
In einer Python-Konsole können Sie die folgenden zwei Möglichkeiten ausprobieren.
unter dem gleichen Arbeitsverzeichnis,
1. >> helloworld importieren
# Wenn Sie eine Variable x haben , können Sie diese im IDLE drucken.
>> helloworld.x
# , Wenn Sie eine Funktion func , können Sie auch es so nennen.
>> helloworld.func ()
2. >> runfile ("./ helloworld.py")
helloworld.py
aus?