import sys
if __name__ == '__main__':
print(sys.argv)
print(len(sys.argv))
使用 python main.py
或用 pycharm 运行时,得到的结果为:
['.../xxx/main.py'] # 本文件地址
1
如果在终端执行:
(base) $ python main.py a b
['main.py', 'a', 'b']
3
参数有两种维度区分:
维度1:短选项 & 长选项
维度2:带参数值(开关)& 不带参数值
1、短选项
使用 -参数名
,由1个字母组成; 如 -i
多个短选可以混合,如 -o -t
可写为 -ot
带参数值,字母后面跟冒号:
,如 ``
2、长选项
使用 --参数名
,如 --version
;
带参数的,后面要紧跟 =
, 如 --input=/use/bin/xx
。=
左右两侧都不能有空格。
getopt.getopt 方法表示
getopt.getopt(args, options[, long_options])
例子
opts, args = getopt.getopt(sys.argv[1:], 'v:' )
print('opts : ', opts)
$ python main.py -v:hi
opts : [('-v', ':hi')]
args : []
例子
print(sys.argv)
opts, args = getopt.getopt(sys.argv[1:], 'av:' )
(base) $ python main.py -av:hi
['main.py', '-av:hi']
opts : [('-a', ''), ('-v', ':hi')]
(base) $ python main.py -av hi
['main.py', '-av', 'hi']
opts : [('-a', ''), ('-v', 'hi')]
例子
opts, args = getopt.getopt(sys.argv[1:], 'vf:c')
(base) $ python main.py -v -f:hi -c
argv : ['main.py', '-v', '-f:hi', '-c']
opts : [('-v', ''), ('-f', ':hi'), ('-c', '')]
(base) $ python main.py -v -f hi -c
argv : ['main.py', '-v', '-f', 'hi', '-c']
opts : [('-v', ''), ('-f', 'hi'), ('-c', '')]
例子
print(sys.argv)
opts, args = getopt.getopt(sys.argv[1:], 'v', ["output="] )
$ python main.py -v --output=night
['main.py', '-v', '--output=night']
opts : [('-v', ''), ('--output', 'night')]
例子
print(sys.argv)
opts, args = getopt.getopt(sys.argv[1:], 'v', ["help", "output="])
$ python main.py -v --help --output=night
['main.py', '-v', '--help', '--output=night']
opts : [('-v', ''), ('--help', ''), ('--output', 'night')]
例子
多个短选项 和 多个长选项,最好把短选项合成一个字符串来写,如下:
opts, args = getopt.getopt(sys.argv[1:], 'vf:c', ["help", "output="])
(base) $ python main.py -v -f hi -c --help --output=osx
argv : ['main.py', '-v', '-f', 'hi', '-c', '--help', '--output=osx']
opts : [('-v', ''), ('-f', 'hi'), ('-c', ''), ('--help', ''), ('--output', 'osx')]
print('argv : ', sys.argv)
opts, args = getopt.getopt(sys.argv[1:], 'vo:h', ["help", "output=", "version="])
print('opts : ', opts)
print('args : ', args)
for opt_name, opt_value in opts:
if opt_name in ('-h', '--help'):
print("[*] Help info")
exit()
if opt_name in ('-o', '--output'):
output = opt_value
print('output : ', output)
break
$ python main.py -v -o:osx1 -h --help --output=osx2
-- app : <Celery __main__ at 0x7f8f0cb16d10>
argv : ['main.py', '-v', '-o:osx1', '-h', '--help', '--output=osx2']
opts : [('-v', ''), ('-o', ':osx1'), ('-h', ''), ('--help', ''), ('--output', 'osx2')]
output : :osx1
https://docs.python.org/zh-cn/3/library/argparse.html
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
parser.add_argument("-o", "--output", metavar="DIR", help="write weights to DIR")
args = parser.parse_args()
print(args) # Namespace(output='nihao')
print(type(args)) #
print(args.accumulate(args.integers))
使用测试
(base) $ python t01.py -h
usage: t01.py [-h] [--sum] [-o DIR] N [N ...]
Process some integers.
positional arguments:
N an integer for the accumulator
optional arguments:
-h, --help show this help message and exit
--sum sum the integers (default: find the max)
-o DIR, --output DIR write weights to DIR
(base) $ python t01.py --sum 1 3 5 7
Namespace(accumulate=<built-in function sum>, integers=[1, 3, 5, 7], output=None)
<class 'argparse.Namespace'>
16