argparse的一個使用例子:
#! /usr/bin/env python
# coding=utf8
import socket
import argparse
def setArgparse():
parser = argparse.ArgumentParser(description="socket test")#添加子產品描述
parser.add_argument('--host', action="store", dest="host", required=True)
parser.add_argument('--port', action='store', dest='port', type=int, required=True)
give_args = parser.parse_args()
host = give_args.host
port = give_args.port
try:
s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as e:
print 'Error create socket %s'.format(e)
if __name__ == "__main__":
setArgparse()

擴充例子:
import argparse
parse = argparse.ArgumentParser()
parse.add_argument("a", help="params means")
parse.add_argument("-C", "--gc", default="count")
parse.add_argument("--ga", help="params means ga",dest='simple_value',choices=['A', 'B', 'C', 0])
parse.add_argument("--gb", help="params means gb",action="store_const",const='value-to-store')
args = parse.parse_args()
print args.simple_value,args.gb,args.gc
### add_argument 說明
不帶'--'的參數
調用腳本時必須輸入值
參數輸入的順序與程式中定義的順序一緻
'-'的參數
可不輸入 add_argument("-a")
類似有'--'的shortname,但程式中的變量名為定義的參數名
'--'參數
參數别名: 隻能是個字元,區分大小寫
add_argument("-shortname","--name", help="params means"),但代碼中不能使用shortname
dest: 參數在程式中對應的變量名稱 add_argument("a",dest='code_name')
default: 參數預設值
help: 參數作用解釋 add_argument("a", help="params means")
type : 預設string add_argument("c", type=int)
action:
store:預設action模式,存儲值到指定變量。
store_const:存儲值在參數的const部分指定,多用于實作非布爾的指令行flag。
store_true / store_false:布爾開關。 store_true.預設為False,輸入則為true。 store_flase 相反
append:存儲值到清單,該參數可以重複使用。
append_const:存儲值到清單,存儲值在參數的const部分指定。
count: 統計參數簡寫輸入的個數 add_argument("-c", "--gc", action="count")
version 輸出版本資訊然後退出。
const:配合action="store_const|append_const"使用,預設值
choices:輸入值的範圍 add_argument("--gb", choices=['A', 'B', 'C', 0])
required : 預設False, 若為 True, 表示必須輸入該參數
==================================================================================
Keyword Arguments:
- option_strings -- A list of command-line option strings which should be associated with this action.
- dest -- The name of the attribute to hold the created object(s)
- nargs -- The number of command-line arguments that should be consumed. By default, one argument will be consumed and a single value will be produced.
Other values include:
- N (an integer) consumes N arguments (and produces a list)
- '?' consumes zero or one arguments
- '*' consumes zero or more arguments (and produces a list)
- '+' consumes one or more arguments (and produces a list)
Note that the difference between the default and nargs= is that with the default, a single value will be produced, while with nargs=, a list containing a single value will be produced.
- const -- The value to be produced if the option is specified and the option uses an action that takes no values.
- default -- The value to be produced if the option is not specified.
- type -- A callable that accepts a single string argument, and returns the converted value.
The standard Python types str, int, float, and complex are useful examples of such callables. If None, str is used.
- choices -- A container of values that should be allowed.
If not None, after a command-line argument has been converted to the appropriate type, an exception will be raised if it is not a member of this collection.
- required -- True if the action must always be specified at the command line. This is only meaningful for optional command-line arguments.
- help -- The help string describing the argument.
- metavar -- The name to be used for the option's argument with the help string. If None, the 'dest' value will be used as the name.
import argparse
# sub-command functions
def subcmd_list(args):
print "list"
def subcmd_create(args):
print "create"
def subcmd_delete(args):
print "delete"
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='commands')
# A list command
list_parser = subparsers.add_parser('list', help='Listcontents')
list_parser.add_argument('dirname', action='store', help='Directory tolist')
list_parse.set_defaults(func=subcmd_list)
# A create command
create_parser = subparsers.add_parser('create', help='Create a directory')
create_parser.add_argument('dirname',action='store',help='New directoryto create')
create_parser.add_argument('--read-only',default=False, action='store_true',help='Setpermissions to prevent writing to the directory')
create_parser .set_defaults(func=subcmd_create)
# A delete command
delete_parser = subparsers.add_parser('delete',help='Remove a directory')
delete_parser.add_argument( 'dirname', action='store',help='The directory to remove')
delete_parser.add_argument('--recursive', '-r',default=False, action='store_true',help='Remove thecontents of the directory, too')
delete_parser .set_defaults(func=subcmd_delete)
args = parser.parse_args()
# call subcmd
args.fun(args)