Ich bin ein Python-Skript erstellen, die die Argumente vom Benutzer angegebenen verwendet eine ausführbare Datei zu starten:subprocess.Popen optionale Argumente
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--stringC', dest="stringC", help="stringC", type=str)
parser.add_argument('-f', '--stringF', dest="stringF", help="stringF", type=str)
parser.add_argument('-o', '--stringO', dest="stringO", help="stringO", type=str)
parser.add_argument('-d', '--stringD', dest="stringD", help="stringD", type=str)
parser.add_argument('-s', '--stringS', dest="stringS", help="stringS", type=str)
args = parser.parse_args()
command = 'executable-location'
statement = [command, '-c', stringC, '-f', stringF, '-o', stringO, '-d', stringD, '-s', stringS]
p = subprocess.Popen(statement)
Das Problem ist, dass einige dieser Parameter für die ausführbare Datei optional sind und wenn Wenn nicht angegeben, verwendet das Programm eigene Standardwerte. Daher werden derzeit alle Parameter verwendet, obwohl ich manchmal die Standardwerte verwenden möchte.
Idealerweise möchte ich der ausführbaren Datei nur Argumente geben, die analysiert wurden. Ich habe versucht,
statement = [command, args]
p = subprocess.Popen(statement2)
und
p = subprocess.Popen(args)
aber es gibt mir die folgende Fehlermeldung:
TypeError: 'Namespace' object is not iterable
Hoffentlich jemand mir dabei helfen kann. Danke im Voraus.
Vielen Dank, ich entschied mich für die zweite Option, da ich das Skript nicht jedes Mal aktualisieren möchte, wenn sich die Standardwerte des Programms ändern. – Aelion