Python 添加命令行参数步骤
作者:盼小辉丶 发布时间:2022-10-24 05:15:40
前言
许多任务程序如果为其构造为一个命令行界面,就可以通过接受不同的参数来改变它的工作方式。例如,在爬虫程序中,不同 URL
通常可以作为命令行参数传递给任务程序,从而可以爬取不同网页中的数据。在 Python
标准库中包含一个强大的 argparse
模块,可以轻松创建丰富的命令行参数解析。
添加命令行参数的一般步骤
在程序脚本中, argparse
的基本使用方式可以分三个步骤显示:
定义脚本要接受的参数,生成新的参数解析器
调用定义的解析器,返回一个包含所有结果参数的对象
使用带有参数的命令调用脚本,使得定义的参数行为生效
一般而言,使用命令行参数的脚本遵循以下结构:
导入相关库
定义函数
定义参数解析器
对参数进行操作
使用参数调用函数,以执行不同操作
其中,一般使用 main
函数来显式的声明代码的执行入口,简单情况下,我们可以直接使用命令行传入的参数而无需进行复杂处理。
命令行参数示例
接下来,我们通过一个示例来了解如何添加并使用命令行参数。首先创建一个脚本 argparse_example.py
,该脚本接受单个整数作为位置参数,并打印执行次数的 “Hello world.
”。脚本代码如下,我们遵循上述结构,其中定义的 main
仅仅执行打印功能:
import argparse
def main(num):
print('Hello world.\n' * num)
if __name__ == '__main__':
parse = argparse.ArgumentParser()
parse.add_argument('number', type=int, help='A number')
args = parse.parse_args()
main(args.number)
在脚本中,参数通过 add_arguments
添加到解析器。定义了所有参数之后,调用 parse_args()
将返回一个包含参数解析结果的对象,如果出现错误则退出执行。
调用脚本并检查参数的使用方式,不带参数调用脚本时会自动显示帮助信息,使用参数 -h
可以显示扩展帮助信息:
$ python argparse_example.py
usage: argparse_example.py [-h] number
argparse_example.py: error: the following arguments are required: number
$ python argparse_example.py -h
usage: argparse_example.py [-h] number
positional arguments:
number A number
optional arguments:
-h, --help show this help message and exit
使用额外参数调用脚本,可以按程序预期执行脚本:
$ python argparse_example.py 3
Hello world.
Hello world.
Hello world.
$ python argparse_example.py three
usage: argparse_example.py [-h] number
argparse_example.py: error: argument number: invalid int value: 'three'
更改脚本,添加可选参数用于接受所需打印的字符串,且默认值为 “Hello world
”,编写argparse_example_2.py
脚本如下所示:
import argparse
def main(string, num):
print(string * num)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('num', type=int, help='A number')
parser.add_argument('-s', type=str, help='String to print', default='Hello world.\n')
args = parser.parse_args()
main(args.s, args.num)
再次执行脚本,可以看到帮助已经更新,使用 -s
选项可以打印不同的字符串:
$ python argparse_example_2.py -h
usage: argparse_example_2.py [-h] [-s S] num
positional arguments:
num A number
optional arguments:
-h, --help show this help message and exit
-s S String to print
$ python argparse_example_2.py 3Hello world.
Hello world.
Hello world.
$ python argparse_example_2.py 3 -s 'I love movie'
I love movieI love movieI love movie
在实际场景中,我们应当为每个参数都添加一个帮助描述信息,参数可以分为位置参数和可选参数,它们的使用方式具有较大差别:
如果参数以
-
开头,则将其视为可选参数,例如脚本中的-s
参数。否则,该参数为位置参数,如脚本中的数字参数为了清楚起见,应当始终为可选参数定义默认值。如果不显式的定义默认值,则默认为
None
,但这可能会令使用者困惑同时,在添加命令行参数时应当始终利用
add_agrment()
方法的help
参数添加带有参数描述的帮助信息,这在调用脚本时即为关键,能够帮助使用者了解每个命令行参数的含义
来源:https://juejin.cn/post/7128037718612770824
猜你喜欢
- 一、Servlet实现文件上传,需要添加第三方提供的jar包下载地址:1) commons-fileupload-1.2.2-bin.zip
- CSS 3 + HTML 5 是未来的 Web,它们都还没有正式到来,虽然不少浏览器已经开始对它们提供部分支持。本文介绍了 5 个 CSS3
- 本文用到的文件的下载地址百度网盘链接: https://pan.baidu.com/s/1tmpdEfAZKff5TOMAitUXqQ提取码
- 前两天拉取公司前端代码修改,发现在开发者工具的sources选项里边,居然没有列出来我要调试的js脚本,后来观察了一下,脚本是动态在页面里引
- 前言现在正是卡塔尔世界杯激战正酣的时候,每天都有各种各样的新闻。而且,不同的球队,随着比赛的进程,关注的热度也会发生翻天覆地的变化。今天我们
- Sun周三宣布,准备以10亿美元收购MySQL开源数据库公司。据悉,Sun将支付大约8亿美元现金给MySQL,以获得其私募股票,另外,Sun
- 各大著名厂家、公司的banner广告设计欣赏,尺寸468x60,gif格式!有acer,阿尔卡特,AMD,中国电信,爱立信,Greatwal
- 前言plt.show()展示图片的时候,截图进行保存,图片不是多么清晰如何保存高清图也是一知识点函数包名:import matplotlib
- 译注:前两天看到一篇不错的英文文章,叫做 How browsers work,该文概要的介绍了浏览器从头到尾的工作机制,包括HTML等的解析
- 一、直接导入模块import 模块名优点:干净直接import sysprint(sys.path)import os # os是一个模块i
- //创建组件 function createobj() { if (window.ActiveXObject) { return(new A
- 2007年1月,国务院 * 了中央“一号文件”,文件中对加快农业信息化建设有了更明确的部署,为新农村建
- 1.find函数find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含
- 在上一篇博客中,我们学习了python遗传算法包geatpy。并用它展示了一个不带约束的单目标规划问题,对往期内容感兴趣的同学可以参考👇:链
- 分享人:月漓作为交互设计师,你是否在一个项目中花费大量的时间来沟通、修改、明确需求?其实这些前期工作(设计原型前)是我们和PD、运营、开发之
- TEMPLATESDjango 1.8的新特性一个列表,包含所有在Django中使用的模板引擎的设置。列表中的每一项都是一个字典,包含某个引
- 在pycharm使用过程中,对于每次新建的python文件的时候,关于代码编写者的一些个人信息快捷填写,使用模板的方式比较方便。方法如下:1
- 最近在老家找工作,无奈老家工作真心太少,也没什么面试机会,不过之前面试一家公司,提了一个有意思的需求,检测河面没有有什么船只之类的物体,我当
- 一、“无”的哲学佛家讲究“因果报应”,有果必有应。此段看似与主题没有血缘关系,实际讲的是“因”。我个人比较喜欢老子的道家思想,并喜欢以其思想
- 目录需求分析进一步分析再进一步分析代码实现我们在写爬虫的过程中,除了研究反爬之外,几乎全部的时间都在写解析逻辑。那么,生命苦短,为什么我们不