IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python—argparse模块 -> 正文阅读

[Python知识库]Python—argparse模块

介绍

最近在看深度学习的一些代码,发现大佬们经常使用argparse包,于是看了看这个包的简单用法。
argparse是Python的内置包,不需要手动安装。它是Python 标准库中推荐的命令行解析模块。

传入一个位置参数

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-epochs', type=int, help='训练轮次')
# 解析参数列表
args = parser.parse_args()
# 使用.参数名可以获取到参数值
print(args.epochs)
add_argument函数用于指定程序能够接受哪些命令行选项。
    1. 第一个参数为添加的位置参数名称
    2. 第二个参数 type 为该位置参数的类型
    3. 第三个参数 help 为提示信息

打开命令行窗口,切换到当前目录,输入命令 python test.py -epochs 100 可以看到输出结果为100.

  • 如果不传值默认为None

输入命令 python test.py -hpython test.py --help 可以看到帮助信息:

usage: test.py [-h] [-epochs EPOCHS]

optional arguments:
  -h, --help      show this help message and exit
  -epochs EPOCHS  训练轮次

为单个参数传入多个值

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-epochs', type=int, nargs='+', help='训练轮次')

args = parser.parse_args()

print(args.epochs)

add_argument 方法中设置 nargs 参数可以输入多个值,其中:

'+' 表示参数可设置一个或多个
'*' 表示参数可设置零个或多个
'?' 表示参数可设置零个或一个
N 表示参数为N个

在命令行中输入 python test.py -epochs 100 80 50 10, 将看到返回结果:[100, 80, 50, 10]

添加多个参数

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-epochs', type=int, help='训练轮次')
parser.add_argument('-learning_rate', type=float, help='学习率')
parser.add_argument('-image_size', type=int, help='输入图片大小')

args = parser.parse_args()

print('训练轮次:', args.epochs)
print('学习率:', args.learning_rate)
print('图片大小:', args.image_size)

在命令行中输入 python test.py -epochs 100 -learning_rate 0.001 -image_size 224,可以看到输出的结果:

训练轮次: 100
学习率: 0.001
图片大小: 224

可选参数

有时候我们会遇到可选的参数,在参数名前加 '--' 即可。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-epochs', type=int, help='训练轮次')
parser.add_argument('--checkpoint', type=bool, help='是否保存检查点')

args = parser.parse_args()

print('训练轮次:', args.epochs)
print('是否保存检查点:', args.checkpoint)

在命令行中输入 python test.py -epochs 100 ,可以看到输出结果:

训练轮次: 100
是否保存检查点: None

输入 python test.py -epochs 100 --checkpoint True,则输出结果变为:

训练轮次: 100
是否保存检查点: True

短选项

如果你熟悉命令行的用法,会知道可以为参数设置一个便捷输入。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-epochs', type=int, help='训练轮次')
parser.add_argument('-lr', '--learning_rate', type=float, help='学习率')
args = parser.parse_args()

print('训练轮次:', args.epochs)
print('学习率:', args.learning_rate)

在命令行输入 python test.py -epochs 100 --learning_rate 0.001,可以看到输出结果:

训练轮次: 100
学习率: 0.001

输入 python test.py -epochs 100 -lr 0.001, 也可以得到相同的输出结果。这样可以方便一些参数的输入。

从代码中可以看到短选项只能与可选参数搭配使用。

默认值

可以在 add_argument 方法中设置 default 参数,来为参数指定默认值。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-epochs', type=int, default=100,help='训练轮次')
parser.add_argument('-lr', '--learning_rate', type=float, default=0.001,help='学习率')
args = parser.parse_args()

print('训练轮次:', args.epochs)
print('学习率:', args.learning_rate)

在控制台输入命令 python test.py, 可以得到运行结果:

训练轮次: 100
学习率: 0.001

必须参数

可以在 add_argument 方法中设置 required 参数,指定该参数必须输入。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-epochs', type=int, required=True, help='训练轮次')

args = parser.parse_args()

print('训练轮次:', args.epochs)

在命令行输入 python test.py ,将会报错:

usage: test.py [-h] -epochs EPOCHS
test.py: error: the following arguments are required: -epochs

如果不指定 required=True, 若不传入值,则默认为None,而现在不传入值,将会报错。

输入 python test.py -epochs 50, 将会看到期望的结果50

限定参数的值

可以在 add_argument 方法中设置 choices 参数,指定该参数的可能值。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-epochs', type=int, choices=[10,50,100],help='训练轮次')

args = parser.parse_args()

print('训练轮次:', args.epochs)

我们使用 choicesepochs 的取值限定为 10,50,100,如果输入的数不在这三个数之中,则会报错。

更改 parse_args 中的参数名称

可以在 add_argument 方法中设置 dest 参数,指定该参数在parse_args中的名称。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-epochs', type=int, dest='e',help='训练轮次')

args = parser.parse_args()

print('训练轮次:', args.e)

上面的代码中,我们使用 destepochs 参数在parse_args中的名称改为了 e
注意在命令行中输入的命令仍为 python test.py -epochs 5

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:28:29  更:2021-09-04 17:29:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:02:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码