python中argparse
python中argparse
在很多编程语言中,运行程序可以直接使用function(a,b,……)运行程序,但是在python中就无法实现,那么我们如何在命令行中传递参数呢?在python的中,有一个argparse包,能够实现。
当遇到需要参数的情况时,有以下三种处理方法:
1. 直接给定
这种方法虽然实现起来方便,但是灵活性非常差,每次都需要打开python文件修改参数。
2. 手动解析
这种方法就是写一个小代码段用来对输入的命令进行解析,例如:
import sys
def TestSys():
for arg in sys.argv[1: ] : #对输入的第二个参数到最后,arg[0] 为第一个参数
print arg
这个方法也不错,缺点就是每次输入的格式必须正确,多一个少一个都不行。
3. 自动解析
就是使用python中的包argparse来解析,下面用一个实例来说明其用法。
import argparse #导入包
parser = argparse.ArgumentParser() #创建一个解析处理器
#下面设定需要处理的参数,格式如下:
#parser.add_argument('-shortname','--fullname',type=?,default=?)#参数数量可选
parser.add_argument('para') #这种格式不满足上述格式,但是是正确的,并且是最简单的。它表示
#para这个参数是必须有的
parser.add_argument('-shortname','--fullname')#存在简称和全程的格式在输入时可有可无
parser.add_argument('--fullnage',type=?,default=?)#当然不使用简称也是可以的
……
……
#可以设置多个参数
#获取参数值
args = parser.parse_args()
para = args.fullname
实例如下(可直接运行):
- </pre></p><p><span style="font-size:18px;"> </span><pre name="code" class="python">#!/usr/bin/env python
- # encoding: utf-8
- from PIL import Image
- import argparse
- parser = argparse.ArgumentParser()
- parser.add_argument('file') #输入文件
- parser.add_argument('-ob', '--output') #输出文件
- parser.add_argument('--width', type = int,default=80) #输出字符画宽
- parser.add_argument('--height', type = int,default = 80) #输出字符画高
- args = parser.parse_args()
- IMG = args.file
- WIDTH = args.width
- HEIGHT = args.height
- OUTPUT = args.output
- print IMG
- print WIDTH
- print HEIGHT
- print OUTPUT
在命令行中输入:
- python c.py ascii_dora.png -o output.txt --width 100 --height 80
其中 c.py 为python文件名,ascii_dora.png为图片名称(参数一),output.txt为输出文件名(参数二),后面为长度和宽度两个参数
结果如下:
ascii_dora.png #获得了文件名
100 #获得了输入值100
80 #获得了默认值
output.txt #获得输出文件名
Another example:
- def main(argv):
- parser = argparse.ArgumentParser()
- parser.add_argument('-m','--map')
- parser.add_argument('-d','--dir', nargs='+')
- parser.add_argument('-o','--output')
- args = parser.parse_args()
- mapfile = args.map
- srcdir = args.dir
- output = args.output
假设文件名为a.py, 则示例命令为:python a.py -m b.map -d c d f -o outpt.txt
python中argparse的更多相关文章
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- python中argparse模块简单使用
python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...
- python中argparse模块的使用
有两个文件一个是 文件1:sync_shop_source_bimer.sh 文件2:sync_shop_source_bimer.py 在sync_shop_source_bimer.sh 中调用s ...
- python 中argparse 实例解析
一 概念: argparse是python的一个命令行解析包.它可以使写用户友好的命令行接口变得非常容易.该模块定义什么参数是需要的,并且能指出怎么解析sys.argv的参数.它也可以自动的生成帮助和 ...
- python中argparse库的使用教程链接
这两篇文章详细介绍了argparse库的参数设置及使用包括位置参数与可选参数的用法 http://blog.csdn.net/guojuxia/article/details/44462381 htt ...
- 《构建之法》教学笔记——Python中的效能分析与几个问题
<构建之法:现代软件工程>中第2章对效能分析进行了介绍,基于的工具是VSTS.由于我教授的学生中只有部分同学选修了C#,若采用书中例子讲解,学生可能理解起来比较困难.不过所有这些学生都学习 ...
- python 学习 argparse
1. argparse python 中用于解析命令行参数和选项的标准模块 创建一个解析器对象,解析器类ArgumentParser add_argument() 方法用来指定程序接受那些命令行参数, ...
- python中导入一个需要传参的模块
最近跑实验,遇到了一个问题:由于实验数据集比较多,每次跑完一个数据集就需要手动更改文件路径,再将文件传到服务器,再运行实验,这样的话效率很低,必须要专门看着这个实验,啥时候跑完就手动修改运行下一个实验 ...
- python 历险记(五)— python 中的模块
目录 前言 基础 模块化程序设计 模块化有哪些好处? 什么是 python 中的模块? 引入模块有几种方式? 模块的查找顺序 模块中包含执行语句的情况 用 dir() 函数来窥探模块 python 的 ...
随机推荐
- 关于Hive中常用函数需要注意的点小合集
1.COALESCE( value1,value2,... ) The COALESCE function returns the fist not NULL value from the list ...
- oracle导出导入数据库
一.给空表分配空间: 这一步一定要做,否则空表不能导出. 首先连接你要导出的库,在该库上执行以下sql: select 'alter table '||table_name||' allocate e ...
- 【转】19个必须知道的Visual Studio快捷键
本文将为大家列出在Visual Studio中常用的快捷键,正确熟练地使用快捷键,将大大提高你的编程工作效率. 项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt ...
- bzoj3277 串 (后缀数组+二分答案+ST表)
常见操作:先把所有串都连到一起,但中间加上一个特殊的符号(不能在原串中/出现过)作为分割 由于全部的子串就等于所有后缀的所有前缀,那我们对于每一个后缀,去求一个最长的前缀,来满足这个前缀在至少K个原串 ...
- 逆向---01.Nop、中文字符串搜索、保存修改后程序
基础知识:(Nop:删除跳转) gcc编译链接命令: gcc -o 生成文件名 源文件名 gcc编译成汇编代码:gcc -o 生成文件名 -S 源文件名 VS查看汇编代码:(调试模式下,Ctrl+F ...
- SqlServer存储过程详解
SqlServer存储过程详解 1.创建存储过程的基本语法模板: if (exists (select * from sys.objects where name = 'pro_name')) dro ...
- Luogu 1312 【NOIP2011】玛雅游戏 (搜索)
Luogu 1312 [NOIP2011]玛雅游戏 (搜索) Description Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空 ...
- Spring的后置处理器BeanFactoryPostProcessor
新建一个JavaBean UserBeanFactoryPostProcessor 实现了BeanFactoryPostProcessor接口 Spring配置文件如下: 编写测试用例 从结果可以看出 ...
- 【洛谷P1091】合唱队列
题目大意:给定一个有 N 个正整数的序列,从其中拿走一些数,使得剩下的数满足严格单峰性,即先严格递增后严格递减,允许单调增和单调减,求最少需要拿走多少数. 题解:先考虑严格单调的情况,最少需要拿走多少 ...
- MVC中权限的知识点及具体实现代码
一:知识点部分 权限是做网页经常要涉及到的一个知识点,在使用MVC做权限设计时需要先了解以下知识: MVC中Url的执行是按照Controller->Action->View页面,但是我们 ...