Martijenの答えは理にかなっていますが、他の人には明白に見えるかもしれないが、私には理解するのが難しい重要な何かが欠けていました。
argparseを使用するバージョンでは、本体にこの行を含める必要があります。
args = parser.parse_args(args)
通常、スクリプトでargparseを使用している場合は、次のように記述します。
args = parser.parse_args()
parse_argsは、コマンドラインから引数を見つけます。ただし、この場合、main関数はコマンドライン引数にアクセスできないため、引数が何であるかをargparseに指示する必要があります。
これが例です
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:])
このmytest.pyに名前を付けたとすると、実行するには、コマンドラインからこれらのいずれかを実行できます。
python ./mytest.py -x 8
python ./mytest.py -x 8 -y 2
python ./mytest.py
それぞれを返します
X center: 8.0
Y center: 4
または
X center: 8.0
Y center: 2.0
または
X center: 2
Y center: 4
または、別のPythonスクリプトから実行する場合は、次のことができます。
import mytest
mytest.main(["-x","7","-y","6"])
戻る
X center: 7.0
Y center: 6.0
myModule.main()
です。これまでに何を試しましたか?