Teilprozess.Popen : wie übergibt man eine Liste als argument
Ich brauche nur einen Hinweis, wie man die Dinge richtig zu machen.
Sagen, ich habe ein Skript namens script.py was nutzt eine Liste von Namen als argument ["name1", "name2", etc.. ].
Ich wollen, rufen Sie dieses Skript von einem anderen Skript mit dem subprocess-Modul. Also, was ich tun möchte ist Folgendes :
myList = ["name1", "name2", "name3"]
subprocess.Popen(["python", "script.py", myList])
Natürlich nicht funktioniert, da der Unterprozess.Popen-Methode verlangt eine Liste von Zeichenfolgen als Argumente verwendet.
So zog ich in Betracht, die folgenden :
subprocess.Popen(["python", "script.py", str(myList)])
Nun der Prozess gestartet, aber es funktioniert nicht, weil es hat einen string als argument und nicht eine Liste. Wie sollte ich dieses Problem beheben richtig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verketten mit
+
Betreiber.BTW, wenn Sie möchten, verwenden Sie das gleiche python-Programm, ersetzen
"python"
mitsys.executable
..extend()
es, wenn Sie sich nicht sicher sind über die Art der zusätzlichen Argumente.+ list(myList)
extend
ist nur nützlich, wenn Sie ändern eine benannte Liste vor dem Aufruf.subprocess.Popen(["python", "script.py"].extend(myList))
würde passierenNone
(der Rückgabewert vonextend
) als das erste und einzige argument, umPopen()
.sys.argv
.Danke für die schnelle Antwort falsetru. Es funktioniert nicht direkt, aber ich verstehe, wie zu tun ist.
Sie sind Anregung äquivalent ist zu tun :
Wo ich 3 Argumente, die Zeichenfolgen enthalten, die in meiner ursprünglichen Liste.
Alles, was ich zu tun in meinem script.py Datei ist der Bau einer neuen Liste von jedem argument erhalten, indem Sie Folgendes tun :
myList ist nun dieselbe als die, die ich anfänglich hatte!
Weiß nicht, warum ich nicht nach oben!
extend
zu fügen Sie weitere Elemente in die Liste. Dieextend
kam praktisch, als ich noch zu entscheiden, was Sie auf hinzufügen in die Liste vor dem Aufrufsubprocess.Popen()