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知识库 -> 【argparse模块详解】 -> 正文阅读

[Python知识库]【argparse模块详解】

1. 传入一个参数

首先新建一个python文件:test.py
打入以下代码进行测试

import argparse

parser = argparse.ArgumentParser(description='命令行中传入一个参数')
# param是参数的名字,type是要传入参数的数据类型,help是该参数的提示信息
parser.add_argument('param', type=str, help='参数')

# 获得传入的参数
args = parser.parse_args()
print(args) 

在命令行中输入python test.py -h
查看帮助信息,得到以下结果:
在这里插入图片描述
再加入一个参数hello来运行,结果如下:
在这里插入图片描述

2. 操作arg字典

这里得到的Namespace(param='hello')是一种类似于python字典的数据结构
我们可以用args.参数名来获取参数
代码改为:

import argparse

parser = argparse.ArgumentParser(description='命令行中传入一个参数')
# param是参数的名字,type是要传入参数的数据类型,help是该参数的提示信息
parser.add_argument('param', type=str, help='参数')

# 获得传入的参数
args = parser.parse_args()
print(args.param)

再次运行,这次的结果为:
在这里插入图片描述

3. 传入多个参数

现在在运行时传入多个参数,例如hello world试一试
在这里插入图片描述
这时程序报错,提示world参数无法识别
我们把程序修改一下,在add_argument()中加入nargs参数

import argparse

parser = argparse.ArgumentParser(description='命令行中传入一个参数')
# param是参数的名字,type是要传入参数的数据类型,help是该参数的提示信息
parser.add_argument('param', type=str, nargs='+', help='参数')

# 获得传入的参数
args = parser.parse_args()
print(args.param)

再次运行程序,程序正常运行
在这里插入图片描述
其中nargs='+'表示参数可设置一个或多个
还可以用nargs='*'来表示参数可设置零个或多个,nargs='?'来表示参数可设置零个或一个

4. 改变数据类型

add_argument()中的type参数表示传入参数的数据类型,之前我们传入的是字符串,还可以传入其他类型,比如我们将str换成int这样我们传入的就是整型数值,传入的参数可以像正常变量一样进行使用运算等
例如运行以下代码

import argparse

parser = argparse.ArgumentParser(description='命令行中传入一个参数')
# param是参数的名字,type是要传入参数的数据类型,help是该参数的提示信息
parser.add_argument('param', type=int, nargs='+', help='参数')

# 获得传入的参数
args = parser.parse_args()
print(sum(args.param))

结果为
在这里插入图片描述

5. 位置参数

命令行传入的参数是有位置差别的,即传入参数的先后顺序会使得运行结果不同
例如运行以下代码时

import argparse

parser = argparse.ArgumentParser(description='命令行中传入参数')
parser.add_argument('param1', type=str, help='参数1')
parser.add_argument('param2', type=str, help='参数2')

args = parser.parse_args()
print(args.param1 + ' ' + args.param2)

结果为
在这里插入图片描述
在这里插入图片描述

这时先传入的参数被识别为param1,后传入的参数被识别为param2

而如果把以下两行代码调换顺序

parser.add_argument('param1', type=str, help='参数1')
parser.add_argument('param2', type=str, help='参数2')

运行结果为
在这里插入图片描述
这时先传入的hello被识别为param2,后传入的world被识别为param1

6. 可选参数

为了避免上述位置参数会产生尴尬,毕竟不可能让每个人都记住传参的顺序,我们可以使用可选参数,可选参数类似于关键词传参,但需要在关键词前加--

例如我们运行以下程序

import argparse

parser = argparse.ArgumentParser(description='命令行中传入参数')
parser.add_argument('--param1', type=str, help='参数1')
parser.add_argument('--param2', type=str, help='参数2')

args = parser.parse_args()
print(args.param1 + ' ' + args.param2)

结果为在这里插入图片描述
这时就算我们调换代码顺序或者传参顺序都不会改变运行结果

7. 默认参数

add_argument()中的default参数可以为对某个参数设置默认值,当命令行没有传入该参数的值的时候,参数会设为默认值

例如运行以下代码

import argparse

parser = argparse.ArgumentParser(description='命令行中传入参数')
parser.add_argument('--param1', type=str, default='hello', help='参数1')
parser.add_argument('--param2', type=str, default='world', help='参数2')

args = parser.parse_args()
print(args.param1 + ' ' + args.param2)

结果为
在这里插入图片描述在这里插入图片描述

8. 必需参数

add_argument中的required参数可以设置某个参数是否为必需
例如运行以下代码

import argparse

parser = argparse.ArgumentParser(description='命令行中传入参数')
parser.add_argument('--param1', type=str, required=True, default='', help='参数1')
parser.add_argument('--param2', type=str, default='world', help='参数2')

args = parser.parse_args()
print(args.param1 + ' ' + args.param2)

结果为
在这里插入图片描述
程序报错,显示parm1是必需参数
但是把default改为False或去掉default参数再次运行时结果为
在这里插入图片描述
参考文章

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 11:59:03  更:2021-12-07 11:59:21 
 
开发: 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/16 3:17:30-

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