第1单 1.10 添加命令行参数
使用argparse添加命令行参数,代码如下:
import argparse def main(number): print('#' * number) if __name__ == '__main__': parser = argparse.ArgumentParser() #parser.add_argument('number', type=int,help='A number') parser.add_argument('number', type=int,help='一个整数') args = parser.parse_args() main(args.number)
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step1.py
usage: recipe_cli_step1.py [-h] number
recipe_cli_step1.py: error: the following arguments are required: number
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step1.py -h
usage: recipe_cli_step1.py [-h] number
positional arguments:
number 一个整数
optional arguments:
-h, --help show this help message and exit
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step1.py 4
####
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step1.py not_a_number
usage: recipe_cli_step1.py [-h] number
recipe_cli_step1.py: error: argument number: invalid int value: 'not_a_number'
import argparse def main(character, number): print(character * number) if __name__ == '__main__': parser = argparse.ArgumentParser() #parser.add_argument('number', type=int, help='A number') parser.add_argument('number', type=int, help='一个整数') #parser.add_argument('-c', type=str, help='Character to print', default='#') parser.add_argument('-c', type=str, help='打印的字符', default='#') #默认为'#' args = parser.parse_args() main(args.c, args.number)
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step2.py
usage: recipe_cli_step2.py [-h] [-c C] number
recipe_cli_step2.py: error: the following arguments are required: number
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step2.py -h
usage: recipe_cli_step2.py [-h] [-c C] number
positional arguments:
number 一个整数
optional arguments:
-h, --help show this help message and exit
-c C 打印的字符
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step2.py 4
####
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step2.py 5 -c m
mmmmm
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step2.py -c m 5
mmmmm
import argparse def main(character, number): print(character * number) if __name__ == '__main__': parser = argparse.ArgumentParser() #parser.add_argument('number', type=int, help='A number') parser.add_argument('number', type=int, help='一个整数') #parser.add_argument('-c', type=str, help='Character to print', default='#') parser.add_argument('-c', type=str, help='打印的字符', default='#') #parser.add_argument('-U', action='store_true', default=False, dest='uppercase', help='Uppercase the character') parser.add_argument('-U', action='store_true', default=False, dest='uppercase', help='输入该参数将字符转换成大写') args = parser.parse_args() if args.uppercase: args.c = args.c.upper() main(args.c, args.number)
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step3.py
usage: recipe_cli_step3.py [-h] [-c C] [-U] number
recipe_cli_step3.py: error: the following arguments are required: number
huangsiyangdeiMac:ch01 huangsiyang$
huangsiyangdeiMac:ch01 huangsiyang$
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step3.py -h
usage: recipe_cli_step3.py [-h] [-c C] [-U] number
positional arguments:
number 一个整数
optional arguments:
-h, --help show this help message and exit
-c C 打印的字符
-U 输入该参数将字符转换成大写
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step3.py 6
######
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step3.py 6 -c f
ffffff
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step3.py 6 -c f -U
FFFFFF
huangsiyangdeiMac:ch01 huangsiyang$ python recipe_cli_step3.py 6 -c %
%%%%%%