必要な引数を解析するために、argparseを使用するプログラムを書いています。
今のところ私はこれを持っています:
parser.add_argument('--rename', type=str, nargs=2, help='some help')
このスクリプトを実行すると、次のように表示されます。
optional arguments:
-h, --help show this help message and exit
--rename RENAME RENAME
some help
ヘルプ「ページ」に表示されるようにコードを変更するにはどうすればよいですか。
--rename OLDFILE NEWFILE
次に、[〜#〜] oldfile [〜#〜]および[〜#〜] newfile [〜#〜]の値をこのように使用できますか?
args.rename.oldfile
args.rename.newfile
metavar=('OLDFILE', 'NEWFILE')
を設定した場合:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--rename', type=str, nargs=2, help='some help',
metavar=('OLDFILE', 'NEWFILE'))
args = parser.parse_args()
print(args)
次に、test.py -h
は
usage: test.py [-h] [--rename OLDFILE NEWFILE]
optional arguments:
-h, --help show this help message and exit
--rename OLDFILE NEWFILE
some help
その後、次の引数にアクセスできます
oldfile, newfile = args.rename
本当にargs.rename.oldfile
を使用して古いファイルにアクセスしたい場合は、カスタムアクションを設定できます。
import argparse
class RenameAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
setattr(namespace, self.dest,
argparse.Namespace(
**dict(Zip(('oldfile', 'newfile'),
values))))
parser = argparse.ArgumentParser()
parser.add_argument('--rename', type=str, nargs=2, help='some help',
metavar=('OLDFILE', 'NEWFILE'),
action=RenameAction)
args = parser.parse_args()
print(args.rename.oldfile)
しかし、余分なコードは私には本当に価値がないようです。
Argparseのドキュメントを読む( http://docs.python.org/2.7/library/argparse.html#metavar ):
Nargの値が異なると、metavarが複数回使用される可能性があります。タプルをmetavarに提供すると、引数ごとに異なる表示が指定されます。
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('-x', nargs=2)
>>> parser.add_argument('--foo', nargs=2, metavar=('bar', 'baz'))
>>> parser.print_help()
usage: PROG [-h] [-x X X] [--foo bar baz]
optional arguments:
-h, --help show this help message and exit
-x X X
--foo bar baz