私はコマンドラインから呼び出すPythonスクリプト内にユーザ定義関数を持っています。この機能には、3つの必須パラメータと3つのオプションパラメータがあります。可変数の必須引数とオプション引数をコマンドラインで渡す
だから関数定義は次のようになります。
def main(csv, inDir, batchID, mapprj=True, doP2D=True, rp=100):
私はCLで関数を呼び出すときに、私がまたは後者の3つの入力変数を設定しない場合があります。今私が持っている、これらの入力を使用してこの関数を呼び出すには:
if __name__ == '__main__':
import sys
main(sys.argv[1], sys.argv[2], sys.argv[3])
をしかし、私はRP = 50を設定したいとし、その後、この呼び出しはその引数をミス。 しかし、私がsys.argv [6]に行くと、他の3つのオプションの引数を指定しなければ、これは失敗します。
これらの引数をmain関数に与えるためには、次のブロック以外にも良い方法がありますか? ALSO
if __name__ == '__main__':
import sys
if len(sys.argv) == 4: # i.e. 3 arguments are supplied
main(sys.argv[1], sys.argv[2], sys.argv[3])
if len(sys.argv) == 5: # i.e. 4 arguments are supplied
main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
if len(sys.argv) == 6: # i.e. 5 arguments are supplied
main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5])
if len(sys.argv) == 7: # i.e. 6 arguments are supplied
main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6])
、私はこのようなコマンドラインから(上記のようなif文で)スクリプトを呼び出す場合:
私のメイン機能で「プリントRP」、それが戻っていますpython script.py 'csvFile.csv' 'path/to/directory' 'batchName' False False rp=50
rp = 50 '。私はrp = 100と設定すると、rpは省略可能な引数で、デフォルト値は100で、 "rp = 50"を明示的に呼び出すとデフォルト値を上書きし、 "rp = 50"ではなく "rp"
最後に、私はこのようなスクリプトを呼び出すとき:
python script.py 'csvFile.csv' 'path/to/directory' 'batchName' rp=50
変数mapprjが「RP = 50」に設定取得され、doP2Dはデフォルト値どおりTrueで、そしてRPはデフォルト値を残っています上記の呼び出しは、mapprjとdoP2DをデフォルトのTrue値に保ち、明示的に50に設定してから50に設定したと考えました。
私は間違って何をしていますか?
おかげ
何あなたは 'argparse'と呼ばれるモジュールを探しています – Nullman