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

实例如下(可直接运行):

  1. </pre></p><p><span style="font-size:18px;">                   </span><pre name="code" class="python">#!/usr/bin/env python
  2. # encoding: utf-8
  3. from PIL import Image
  4. import argparse
  5. parser = argparse.ArgumentParser()
  6. parser.add_argument('file')     #输入文件
  7. parser.add_argument('-ob', '--output')   #输出文件
  8. parser.add_argument('--width', type = int,default=80) #输出字符画宽
  9. parser.add_argument('--height', type = int,default = 80) #输出字符画高
  10. args = parser.parse_args()
  11. IMG = args.file
  12. WIDTH = args.width
  13. HEIGHT = args.height
  14. OUTPUT = args.output
  15. print IMG
  16. print WIDTH
  17. print HEIGHT
  18. print OUTPUT

在命令行中输入:

  1. 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:

  1. def main(argv):
  2. parser = argparse.ArgumentParser()
  3. parser.add_argument('-m','--map')
  4. parser.add_argument('-d','--dir', nargs='+')
  5. parser.add_argument('-o','--output')
  6. args = parser.parse_args()
  7. mapfile = args.map
  8. srcdir = args.dir
  9. output  = args.output

假设文件名为a.py, 则示例命令为:python  a.py -m b.map -d c d f -o outpt.txt

python中argparse的更多相关文章

  1. python中argparse模块用法实例详解

    python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...

  2. python中argparse模块简单使用

    python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...

  3. python中argparse模块的使用

    有两个文件一个是 文件1:sync_shop_source_bimer.sh 文件2:sync_shop_source_bimer.py 在sync_shop_source_bimer.sh 中调用s ...

  4. python 中argparse 实例解析

    一 概念: argparse是python的一个命令行解析包.它可以使写用户友好的命令行接口变得非常容易.该模块定义什么参数是需要的,并且能指出怎么解析sys.argv的参数.它也可以自动的生成帮助和 ...

  5. python中argparse库的使用教程链接

    这两篇文章详细介绍了argparse库的参数设置及使用包括位置参数与可选参数的用法 http://blog.csdn.net/guojuxia/article/details/44462381 htt ...

  6. 《构建之法》教学笔记——Python中的效能分析与几个问题

    <构建之法:现代软件工程>中第2章对效能分析进行了介绍,基于的工具是VSTS.由于我教授的学生中只有部分同学选修了C#,若采用书中例子讲解,学生可能理解起来比较困难.不过所有这些学生都学习 ...

  7. python 学习 argparse

    1. argparse python 中用于解析命令行参数和选项的标准模块 创建一个解析器对象,解析器类ArgumentParser add_argument() 方法用来指定程序接受那些命令行参数, ...

  8. python中导入一个需要传参的模块

    最近跑实验,遇到了一个问题:由于实验数据集比较多,每次跑完一个数据集就需要手动更改文件路径,再将文件传到服务器,再运行实验,这样的话效率很低,必须要专门看着这个实验,啥时候跑完就手动修改运行下一个实验 ...

  9. python 历险记(五)— python 中的模块

    目录 前言 基础 模块化程序设计 模块化有哪些好处? 什么是 python 中的模块? 引入模块有几种方式? 模块的查找顺序 模块中包含执行语句的情况 用 dir() 函数来窥探模块 python 的 ...

随机推荐

  1. 自学Linux Shell9.1-安装软件程序

    点击返回 自学Linux命令行与Shell脚本之路 9.1-linux安装软件程序 PMS利用一个数据库来记录各种相关内容: Linux系统安装了什么软件包 每个包安装什么文件 每个已安装软件包的版本 ...

  2. [hgoi#2019/3/3]赛后总结

    T1--最长公共前缀(lcp) 定义两个字符串S,T 的最长公共前缀lcp(S,T)为最长的字符串R,满足R 既是S 的前缀又是T 的前缀. 给定一个字符串S,下标从1 开始,每次询问给出四个正整数a ...

  3. happens-before

    happens-before是JMM最核心的概念.对应Java程序员来说,理解happens-before是理解JMM的关键. JMM的设计 首先,让我们来看JMM的设计意图.从JMM设计者的角度,在 ...

  4. AtCoder Regular Contest 067 F - Yakiniku Restaurants

    题意: 有n个餐厅排成一排,第i个与第i+1个之间距离是Ai. 有m种食物,每种食物只能在一个餐厅里吃,第j种食物在第i个餐厅里吃的收益是$b[i][j]$. 选择每种食物在哪个餐厅里吃,使收益减去走 ...

  5. HDU 4292 Food (网络流,最大流)

    HDU 4292 Food (网络流,最大流) Description You, a part-time dining service worker in your college's dining ...

  6. 智能指针unique_ptr

    转自:https://www.cnblogs.com/DswCnblog/p/5628195.html 成员函数 (1) get 获得内部对象的指针, 由于已经重载了()方法, 因此和直接使用对象是一 ...

  7. Python之数据加密与解密及相关操作(hashlib、hmac、random、base64、pycrypto)

    本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...

  8. 代码大片出现报错,请重新编译——Clean

    工作空间中项目莫名大片报错,可能是各种意外原因导致的代码编译错误,可以选 菜单栏的 Project,Clean一下全部项目,系统会自动重新编译所有项目,有时会有奇效.

  9. 关于navicat远程连接mysql问题

    如果你想连接你的mysql的时候发生这个错误: ERROR 1130: Host '192.168.1.81' is not allowed to connect to this MySQL serv ...

  10. Maven 自动打包上传到私服 Nexus

    转载于:http://blog.csdn.net/jerome_s/article/details/54410178           Maven获取jar的默认顺序是