Python argparse模块详解

文章目录

    • 一、前言
    • 二、简单介绍argparse
    • 三、argparse使用
        • 基本步骤
        • add_argument() 方法
        • 示例
    • 四、补充
      • action的可选参数


一、前言

在很多论文的源码中,会有以下这种代码:

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() 解析添加的参数
import argparse                     # 导入模板
parser = argparse.ArgumentParser()  # 创建parser
parser.add_argument()               # 添加参数
args = parser.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

四、补充

action的可选参数

可选参数store_true,store_false

store_true 是指带触发action时为真,不触发则为假

parser.add_argument('-a', action='store_true', default=False)

#python test.py -a => a是true(触发)
#python test.py => a是false(无触发)

你可能感兴趣的:(论文,Python入门,python,argparse)