2016-05-13 7 views
0

Ich muss Python-Skripte: Tester1.py und Tester2.py. Innerhalb Tester1 möchte ich von Zeit zu Zeit Tester2.py starten. Ich möchte auch Tester2.py einige Argumente übergeben. Im Moment sieht mein Code wie folgt aus:Python: Unterprozess funktioniert anders als Terminal. Was muss ich ändern?

Tester1:

subprocess.call(['python3 Tester2.py testString']) 

Tester2:

def start(): 
    message = sys.argv[1] 
    print(message) 

start() 

Nun mein Problem: Wenn ich mit meinem Terminal Tester2 wie 'python3 Tester2.py teststring' laufen Meine Konsole druckt testString aus. Aber wenn ich Tester1 starte und Tester1 versuche, Tester2 zu starten, bekomme ich einen IndexError: "Listenindex außerhalb des Bereichs".

Wie muss ich meinen Code ändern, damit alles funktioniert?

EDIT: niemmi sagte mir, dass ich meinen Code ändern:

subprocess.call(['python3', 'Tester2.py', 'testString']) 

aber jetzt bekomme ich einen Keine solche Datei oder das Verzeichnis Fehler, obwohl beide Skripte im selben Verzeichnis befinden. Jemand weiß warum?

+0

FYI, wenn Sie mit Python sind 3,5 oder höher, empfiehlt die Dokumentation, die run() - Funktion des Subprozesses zu verwenden: https://docs.python.org/3/library/subprocess.html – tschale

Antwort

3

Sie müssen die Argumente, um entweder als separate Elemente in einer Liste oder als String:

subprocess.call(['python3', 'Tester2.py', 'testString']) 
# or 
subprocess.call('python3 Tester2.py testString') 

Python documentation folgende Beschreibung hat:

args is required for all calls and should be a string, or a sequence of program arguments. Providing a sequence of arguments is generally preferred, as it allows the module to take care of any required escaping and quoting of arguments (e.g. to permit spaces in file names). If passing a single string, either shell must be True (see below) or else the string must simply name the program to be executed without specifying any arguments.

+0

Ich bekomme immer noch den gleichen Fehler :( – TomHere

+0

oh mein Fehler. funktioniert – TomHere

+0

Jetzt ich Eine solche Datei oder ein solches Verzeichnis erhalten Fehler a obwohl beide Skripte im selben Verzeichnis sind? – TomHere

Verwandte Themen