Ich habe ein Python-Skript, das ein anderes Python-Skript aus einem anderen Verzeichnis aufruft. Zu tun, dass ich subprocess.Popen
verwendet:Aufruf eines Python-Skripts mit Argumenten mit Subprozess
import os
import subprocess
arg_list = [project, profile, reader, file, str(loop)]
wo alle args Zeichenfolge sind, wenn nicht implizit konvertiert
f = open(project_path + '/log.txt','w')
proc = subprocess.Popen([sys.executable, python_script] + arg_list, stdin=subprocess.PIPE, stdout=f, stderr=f)
streamdata = proc.communicate()[0]
retCode = proc.returncode
f.close()
Dieser Teil funktioniert gut, weil die Protokolldatei kann ich Fehler sehen, die auf dem genannten Skript auftritt . Hier ist der Python-Skript namens:
import time
import csv
import os
class loading(object):
def __init__(self, project=None, profile=None, reader=None, file=None, loop=None):
self.project=project
self.profile=profile
self.reader=reader
self.file=file
self.loop=loop
def csv_generation(self):
f=open(self.file,'a')
try:
writer=csv.writer(f)
if self.loop==True:
writer.writerow((self.project,self.profile,self.reader))
else:
raise('File already completed')
finally:
file.close()
def main():
p = loading(project, profile, reader, file, loop)
p.csv_generation()
if __name__ == "__main__":
main()
Wenn ich meine subprocess.Popen starten, ich habe einen Fehler von der gerufenen Skript, das mir sagen, dass 'project' is not defined
. Es sieht so aus, dass die Popen-Methode keine Argumente an dieses Skript übergibt. Ich denke, ich mache etwas falsch, hat jemand eine Idee?
Warum verwenden Sie überhaupt 'subprocess'? Warum nicht einfach "importieren" und die entsprechende Funktionalität direkt aufrufen? – jonrsharpe
@jonrsharpe, weil das von subprocess aufgerufene Skript jedes Mal anders sein wird. Abhängigkeiten sind also gleich. Außerdem befindet sich das Skript nicht im selben Python-Projekt wie dasjenige, das den Subprozess verwendet. –
Sie können mit dem Namen des Skripts importieren, das ist kein Problem. Und es ist nicht klar, was Sie mit * "nicht im selben Python-Projekt" * meinen, wenn beide auf demselben Rechner installiert sind, was kein Problem sein sollte. – jonrsharpe