提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
最近在使用linux系统,经常需要命令行进行传输指令,在这里对相关知识进行总结与归纳,希望对各位能做个参考。
一、argparse是什么?
argparse 模块是python的命令行解析的标准模块,可以让人轻松编写用户友好的命令行接口,这个库可以让我们直接在命令行中向程序中传入参数并让程序运行。
二、使用步骤
1.创建一个解析器对象
在argparse模块中,使用argparse.ArgumentParser()类来创建对象,ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。
代码如下(示例):
import argparse
parser = argparse.ArgumentParser(description='First attempt to use argparse.')
args = parser.parse_args()
ArgumentParser()中参数很多,过于繁琐,如果需要了解可以查看argparse 官方教程但对于普通用户来说,建议了解的是usage,description。
usage :描述程序参数用法(默认值:由添加到解析器的参数生成)
description :这个参数简要描述这个程序做什么以及怎么做。 在帮助消息中,这个描述会显示在命令行用法字符串和各种参数的帮助消息之间
以上是在pycharm中进行演示。
2.传入参数
给一个 ArgumentParser 对象,添加程序参数信息是通过调用 add_argument() 方法完成的。
ArgumentParser.add_argument()。这里参数众多,也依然对比较常用的参数进行描述:
name or flags : 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
nargs : 用来说明传入的参数个数,’+’ 表示传入至少一个参数(类似于*args)
default : 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。
type : 命令行参数应当被转换成的类型。
required :此命令行选项是否可省略 (仅选项可用)。
help :一个此选项作用的简单描述。
metavar :在使用方法信息中,使用的参数值示例。
代码如下(示例):
import argparse
parser = argparse.ArgumentParser(description='First attempt to use argparse.')
parser.add_argument('--f', type=str, help='关键字参数', metavar="N")
parser.add_argument('param1', type=str, help='位置参数', metavar='M')
parser.add_argument('param2', type=str,help='位置参数')
parser.add_argument('param3', type=str,help='位置参数')
args = parser.parse_args()
代码示例如下:
常识小结:
在Linux的  命令行选项传统上有两种:
一种是一个-后面跟一个字母
一种是两个-后面跟一个单词
多数情况下,同一个选项有长短两种开关,比如-h一般等价于–help,-v一般是–verbose,有时候是–version,有些情况下,长短开关并不一一对应。一般来说,没有两个-加一个字母的组合,这个看起来怪怪的,虽然没什么错。
不同的命令能接收的参数不尽相同,有些只有少数的参数,有些则很多,同样的参数,对于不同的命令来说,意义也不尽相同
3.获取解析参数
parse_args() 方法,将参数字符串转换为对象并将其设为命名空间的属性。 返回带有成员的命名空间
代码如下(示例):
import argparse
parser = argparse.ArgumentParser(description='First attempt to use argparse.')
parser.add_argument('-n', '--name', type=str, default='zhang', help='关键字参数')
parser.add_argument('-s', '--sex', type=str, default='male', help='关键字参数')
args = parser.parse_args()
# 没有位置参数的情况下才可打印
print(args)
命名空间如下:
一些小知识点:当’-‘和’–'同时出现的时候,系统默认后者为参数名,前者不是,但是在命令行输入的时候没有这个区分接下来就是打印参数信息了。
总结
提示:这里对文章进行总结:
谢谢观看,如有错误恳请指出,共同进步