Python命令行参数解析sys和argparse

Python命令行参数解析sys和argparse

对于Python,通常有三种方法来解析命令行输入的参数:sys.argv, argparse,getopt。我认为sys.argv用于解析简单的脚本,而argparse用于解析复杂的项目,在这里整理一下sys.argvargparse库如何解析命令行的输入。getopt并没有深入了解过。

方法

1. 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中的索引来解析即可,适合简单的脚本。
  • 如果说你有10个超参,这次运行你只想修改其中的一个看看效果,你还是得在命令行输入10个参数。

2. 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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值