Martijens Antwort macht Sinn, aber es fehlte etwas Entscheidendes, das anderen offensichtlich erscheinen mag, aber für mich schwer herauszufinden war.
In der Version, in der Sie argparse verwenden, muss diese Zeile im Hauptteil enthalten sein.
args = parser.parse_args(args)
Wenn Sie argparse nur in einem Skript verwenden, schreiben Sie normalerweise nur
args = parser.parse_args()
und parse_args finden die Argumente über die Befehlszeile. In diesem Fall hat die Hauptfunktion jedoch keinen Zugriff auf die Befehlszeilenargumente. Sie müssen argparse daher mitteilen, um welche Argumente es sich handelt.
Hier ist ein Beispiel
import argparse
import sys
def x(x_center, y_center):
print "X center:", x_center
print "Y center:", y_center
def main(args):
parser = argparse.ArgumentParser(description="Do something.")
parser.add_argument("-x", "--xcenter", type=float, default= 2, required=False)
parser.add_argument("-y", "--ycenter", type=float, default= 4, required=False)
args = parser.parse_args(args)
x(args.xcenter, args.ycenter)
if __name__ == '__main__':
main(sys.argv[1:])
Angenommen, Sie haben diese Datei mytest.py genannt. Um sie auszuführen, können Sie entweder eine dieser Aktionen über die Befehlszeile ausführen
python ./mytest.py -x 8
python ./mytest.py -x 8 -y 2
python ./mytest.py
welches jeweils zurückkehrt
X center: 8.0
Y center: 4
oder
X center: 8.0
Y center: 2.0
oder
X center: 2
Y center: 4
Oder wenn Sie ein anderes Python-Skript ausführen möchten, können Sie dies tun
import mytest
mytest.main(["-x","7","-y","6"])
was zurückkehrt
X center: 7.0
Y center: 6.0
myModule.main()
. Was hast du bisher versucht?