3

この機能が欲しい:

$ python program.py add Peter 
'Peter' was added to the list of names.

次のようにする--add代わりに、これを実現できます。add

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--add", help="Add a new name to the list of names",
                    action="store")
args = parser.parse_args()
if args.add:
   print "'%s' was added to the list of names." % args.add
else:
   print "Just executing the program baby."

そのような:

$ python program.py --add Peter
'Peter' was added to the list of names.

しかし、--addオプションaddではなくなった場合、どうすればオプションのままにしておくことができます--か? (できればargparseライブラリも使用してください)

4

2 に答える 2

2

必要なものは、実際には「位置引数」と呼ばれます。次のように解析できます。

import argparse                                                             
parser = argparse.ArgumentParser()                                             
parser.add_argument("cmd", help="Execute a command",                           
                    action="store", nargs='*')                                 
args = parser.parse_args()                                                     
if args.cmd:                                                                   
    cmd, name = args.cmd                                                       
    print "'%s' was '%s'-ed to the list of names." % (name, cmd)               
else:                                                                          
    print "Just executing the program baby."                                   

これにより、さまざまなアクションを指定できます。

$ python g.py add peter
'peter' was 'add'-ed to the list of names.

$ python g.py del peter
'peter' was 'del'-ed to the list of names.

$ python g.py 
Just executing the program baby.
于 2012-08-08T09:53:27.577 に答える
1

サブコマンドを使用して、この動作を実現できます。次のようなものを試してください

import argparse
parser = argparse.ArgumentParser()

subparsers = parser.add_subparsers(title='Subcommands',
    description='valid subcommands',
    help='additional help')

addparser = subparsers.add_parser('add')
addparser.add_argument('names', nargs='*')

args = parser.parse_args()

if args.names:
    print "'%s' was added to the list of names." % args.names
else:
    print "Just executing the program baby."

の使用は、あなたの とは異なり、リストになっていることをnargs='*'意味することに注意してください。そのため、任意の数の名前を追加できます(この引数の処理方法を変更する必要があります)。上記は、次のように呼び出すことができます。args.namesargs.addadd

$ python test.py add test
'['test']' was added to the list of names.

$ python test.py add test1 test2
'['test1', 'test2']' was added to the list of names.
于 2012-08-08T09:53:53.627 に答える