python常见的两种命令行使用(argparse和tensorflow)

28 篇文章 14 订阅

前言:本文介绍python中两种常见的命令行处理方法,一种是通过argparse库来实现,一种是使用tensorflow来实现。

一、argparse库实现命令行参数

1.1 定义参数的方法

import argparse

parser = argparse.ArgumentParser(description='some description')  # 定义一个 parser 对象

# 定义参数
parser.add_argument('--exp_name', type=str, default='debug_vx', help='help information')
parser.add_argument('--batch_size', type=int, default=10, help='help infprmation')
parser.add_argument('--learning_rate', type=float, default=0.001,help='help infprmation')
parser.add_argument('--no-cuda', type=boolean, default=False,help='help infprmation')

注意,parser.add_argument()这个函数的参数有很多,一般由上面的四个参数就足够了,即:

# 定义参数
parser.add_argument('--name', type=str, default='default_value', help='help information')

但是,我们在使用的时候,还有很多其他的参数需要注意,比如:

default:设置参数的默认值

type:把从命令行输入的结果转成设置的类型

help:参数命令的介绍

----------------------------------------------------------------------------------------------------------------------------

dest:如果提供dest,例如dest="a",那么可以通过args.a访问该参数

action:参数出发的动作, action=’store_true’ ,表示的是开关的作用,什么意思呢?即只要在运行的时候使用了该参数,                 该参数的值就是True.

store:保存参数,默认

store_const:保存一个被定义为参数规格一部分的值(常量),而不是一个来自参数解析而来的值。

store_ture/store_false:保存相应的布尔值

append:将值保存在一个列表中。

append_const:将一个定义在参数规格中的值(常量)保存在一个列表中。

count:参数出现的次数

           parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")

version:打印程序版本信息

choice:允许的参数值,例如上面choices=【1,5,10】表示输入参数只能为1或5或10

             parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")

required:用来设置在命令中显示参数,当required为True时,在输入命令时需要显示该参数

metavar:用在help信息的输出中

1.2 获取命令行参数的值

依然以上面定义的四个命令行参数为例

args = parser.parse_args()  # 调用parse_args()函数
print(args.exp_name)       # 获取 --exp_name参数的值
print(args.batch_size)     # 获取 --batch_size参数的值
print(args.learning_rate)  # 获取 --learning_rate参数的值
print(args.no-cuda)        # 获取 --no-cuda参数的值

 

、tensorflow实现命令行参数

2.1 定义参数的方法

(1)方式一:

flags = tf.app.flags  # 构建一个flags对象

# 通过flags对象定义参数
flags.DEFINE_string('model', 'graphsage', 'description')      # string
flags.DEFINE_float('learning_rate', 0.00001, 'description.')  # float
flags.DEFINE_integer('dim', 128, 'description')               # int
flags.DEFINE_boolean('random_context', True, 'description')   # bool

(2)方式二:

# 直接通过tf.app.flags定义参数
tf.app.flags.DEFINE_string('model', 'graphsage', 'description')      # string
tf.app.flags.DEFINE_float('learning_rate', 0.00001, 'description.')  # float
tf.app.flags.DEFINE_integer('dim', 128, 'description')               # int
tf.app.flags.DEFINE_boolean('random_context', True, 'description')   # bool

总结:定义命令行参数的一般方法:

tf.app.flags.DEFINE_xxxx('参数名称', 参数值, '参数描述') 
# 另外需要注意的是,与argparse不同的是,这里的参数名称我们不需要添加两个短横线--

2.2 获取命令行参数的值

依然以上面定义的几个参数为例:

flags = tf.app.flags
FLAGS = flags.FLAGS  # 实际上就是tf.app.flags.FLAGS

print(FLAGS.model)              # 获取model参数值
print(FLAGS.learning_rate)      # 获取learning_rate参数值
print(FLAGS.dim)                # 获取dim参数值
print(FLAGS.random_context)     # 获取random_context参数值

2.3 使用tensorflow代替python的main函数

首先定义一个入口主函数main,当然这里的名称不一定要是main,也可以是其他的名字:

def main(args=None):
   pass

启动:

if __name__ == '__main__':
    tf.app.run()  # 这里默认的是使用了定义的main函数,而且没有传递参数

查看一下tf.app.run()的定义如下:

def run(main=None, argv=None):
'''
    main: 表示要启动的函数名称,如果是定义的main,则这个参数可以不用传递,默认启动main
    argv: 需要启动的函数的参数
'''

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值