2013-08-22 10 views
19

私は、必要な引数を解析するために、argparseを使用するプログラムを作成しています。Python argparse:name parameters

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 

OLD FILENEWFILEこのように値はありますか?

args.rename.oldfile 
args.rename.newfile 

答えて

26

あなたはmetavar=('OLDFILE', 'NEWFILE')設定した場合:次にtest.py -h

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) 

はあなたが本当にアクセスしたい場合は

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 

で引数にアクセスすることができます生み出しますオール

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) 

をそれは本当に私にはそれだけの価値余分なコードを思えません:あなたはカスタムアクションを設定することができargs.rename.oldfile でDFILE。

+0

おかげで...「OLDFILE、NEWFILE = args.rename」仕事をする:) – Wolfy

1

argparseドキュメント(http://docs.python.org/2.7/library/argparse.html#metavar)読む:NARGSの

異なる値が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 
関連する問題