一、前言
在很多论文的源码中,会有以下这种代码:
parser = argparse.ArgumentParser(description="Run NGCF.")
parser.add_argument('--weights_path', nargs='?', default='',help='Store model path.')
parser.add_argument('--data_path', nargs='?', default='Data/',help='Input data path.')
parser.add_argument('--proj_path', nargs='?', default='',help='Project path.')
parser.add_argument('--dataset', nargs='?', default='gowalla',help='Choose a dataset from {gowalla, yelp2018, amazon-book}')
parser.add_argument('--pretrain', type=int, default=0,help='0: No pretrain, -1: Pretrain with the learned embeddings, 1:Pretrain with stored models.')
parser.add_argument('--verbose', type=int, default=1,help='Interval of evaluation.')
parser.add_argument('--is_norm', type=int, default=1,help='Interval of evaluation.')
parser.add_argument('--epoch', type=int, default=1000,help='Number of epoch.')
args = parser.parse_args()
二、简单介绍argparse
argparse 模块可以让人轻松编写用户友好的命令行接口。是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。
三、argparse使用
基本步骤
- 创建 ArgumentParser() 对象
- 调用 add_argument() 方法添加参数
- 使用 parse_args() 解析添加的参数
add_argument() 方法
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
add_argument定义单个的命令行参数应当如何解析。每个形参都在下面有它自己更多的描述:
- name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
- action - 当参数在命令行中出现时使用的动作基本类型。
- nargs - 命令行参数应当消耗的数目。
- const - 被一些 action 和 nargs 选择所需求的常数。
- default - 当参数未在命令行中出现时使用的值。
- type - 命令行参数应当被转换成的类型。
- choices - 可用的参数的容器。
- required - 此命令行选项是否可省略 (仅选项可用)。
- help - 一个此选项作用的简单描述。
- metavar - 在使用方法消息中使用的参数值示例。
- dest - 被添加到 parse_args() 所返回对象上的属性名。
(注:nargs=’?’。如果可能的话,会从命令行中消耗一个参数,并产生一个单一项。如果当前没有命令行参数,则会产生 default 值。)
示例
import argparse
parser = argparse.ArgumentParser(description="Run NGCF.")
parser.add_argument('--weights_path', nargs='?', default='',help='Store model path.')
parser.add_argument('--data_path', nargs='?', default='Data/',help='Input data path.')
parser.add_argument('--proj_path', nargs='?', default='',help='Project path.')
parser.add_argument('--dataset', nargs='?', default='gowalla',help='Choose a dataset from {gowalla, yelp2018, amazon-book}')
parser.add_argument('--pretrain', type=int, default=0,help='0: No pretrain, -1: Pretrain with the learned embeddings, 1:Pretrain with stored models.')
parser.add_argument('--verbose', type=int, default=1,help='Interval of evaluation.')
parser.add_argument('--is_norm', type=int, default=1,help='Interval of evaluation.')
parser.add_argument('--epoch', type=int, default=1000,help='Number of epoch.')
args = parser.parse_args()
print(args.--data_path)
print(args.--epoch)
输出:
Data/
1000