プログラムで使用するためにargparseを学習しようとしていますが、構文は次のようになります。
-a --aLong <String> <String>
-b --bLong <String> <String> <Integer>
-c --cLong <String>
-h --help
私はこのコードを持っています:
#!/usr/bin/env python
#coding: utf-8
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Lorem Ipsum')
parser.add_argument('-a','--aLong', help='Lorem Ipsum', required=False)
parser.add_argument('-b','--bLong', help='Lorem Ipsum', required=False)
parser.add_argument('-c','--cLong', help='Lorem Ipsum', required=False)
parser.add_argument('-h','--help', help='Lorem Ipsum', required=False)
parser.parse_args()
問題は、公式ドキュメントを読んだり、YouTubeのビデオを見たりしたのですが、「メイン引数」の「サブ引数」の数をどのように判断できるのか理解できませんでした。
例:myApp.py -b Foobar 9000
、-b
に2つの「サブ引数」が必要であることを設定するにはどうすればよいですか?また、値Foobar
と9000
を取得するにはどうすればよいですか?
そしてもう1つの疑問は、引数をrequired
に設定できるかどうかはわかっていますが、プログラムが実行されるのは少なくとも1つ引数が渡されたときだけです。言及されました。
ばかげた質問かもしれませんが、申し訳ありませんが、理解できません。「先生の力」を持った人がここにいるといいのですが。
import argparse
# Use nargs to specify how many arguments an option should take.
ap = argparse.ArgumentParser()
ap.add_argument('-a', nargs=2)
ap.add_argument('-b', nargs=3)
ap.add_argument('-c', nargs=1)
# An illustration of how access the arguments.
opts = ap.parse_args('-a A1 A2 -b B1 B2 B3 -c C1'.split())
print(opts)
print(opts.a)
print(opts.b)
print(opts.c)
# To require that at least one option be supplied (-a, -b, or -c)
# you have to write your own logic. For example:
opts = ap.parse_args([])
if not any([opts.a, opts.b, opts.c]):
ap.print_usage()
quit()
print("This won't run.")
これの鍵は、必要な相互に排他的なグループを定義することです。
import argparse
# Use nargs to specify how many arguments an option should take.
ap = argparse.ArgumentParser()
group = ap.add_mutually_exclusive_group(required=True)
group.add_argument('-a', nargs=2)
group.add_argument('-b', nargs=3)
group.add_argument('-c', nargs=1)
# Grab the opts from argv
opts = ap.parse_args()
# This line will not be reached if none of a/b/c are specified.
# Usage/help will be printed instead.
print(opts)
print(opts.a)
print(opts.b)
print(opts.c)