对于Python,通常有三种方法来解析命令行输入的参数:sys.argv
, argparse
,getopt
。我认为sys.argv
用于解析简单的脚本,而argparse
用于解析复杂的项目,在这里整理一下sys.argv
和argparse
库如何解析命令行的输入。getopt
并没有深入了解过。
sys.argv
非常简单,接下来先给个示例。
# test.py
import sys
if __name__ =='__main__':
print(sys.argv)
在命令行运行该文件
$ python test.py 123 Peter 22 male
['test.py', '123', 'Peter', '22', 'male']
结论:包括py
程序名在内,所有的参数都会被读取进一个list
。
特点:
list
中,根据list
中的索引来解析即可,适合简单的脚本。argparse
同样,先给个示例。
# test.py
import argparse
if __name__ =='__main__':
parser = argparse.ArgumentParser("CNN模型")
parser.add_argument('--learning_rate', default=0.001, type=float,
help="初始学习率")
parser.add_argument('--epoch', default=30, type=int,
help="训练周期数")
parser.add_argument('--gpu', default='5', type=str,
help="gpu编号")
args = parser.parse_args()
print(args.learning_rate, type(args.learning_rate))
print(args.epoch, type(args.epoch))
print(args.gpu, type(args.gpu))
在命令行运行该文件
$ python test.py --learning_rate=0.01 --gpu=1
0.01 <class 'float'>
30 <class 'int'>
1 <class 'str'>
特点:
参考
https://docs.python.org/3/library/argparse.html