直接从命令行执行py文件的时候如果带有参数,如何获取这些参数,如何解析?

http://blog.chinaunix.net/uid-20786165-id-3182268.html

sys.argv

sys.argv会接受所有的命令行输入, 第一个参数是文件名

import sys
import getopt # run this file
if __name__ =='__main__':
print(sys.argv)
$ python 1206.py xxx
['1206.py', 'xxx']

getopt

getopt模块就是用来解析sys.argv的,但是他有自己的格式要求,这个是广泛使用的

http://blog.csdn.net/intel80586/article/details/8545572

实例加强

http://www.tuicool.com/articles/jaqQvq

  1. 处理所使用的函数叫getopt() ,因为是直接使用import 导入的getopt 模块,所以要加上限定getopt 才可以。
  2. 使用sys.argv[1:] 过滤掉第一个参数(它是执行脚本的名字,不应算作参数的一部分)。
  3. 使用短格式分析串"ho:" 。当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":" 号 。所以"ho:" 就表示"h" 是一个开关选项;"o:" 则表示后面应该带一个参数。
  4. 使用长格式分析串列表:["help", "output="] 。长格式串也可以有开关状态,即后面不跟"=" 号。如果跟一个等号则表示后面还应有一个参数 。这个长格式表示"help" 是一个开关选项;"output=" 则表示后面应该带一个参数。
  5. 调用getopt 函数。函数返回两个列表:opts 和args 。opts 为分析出的格式信息。args 为不属于格式信息的剩余的命令行参数。opts 是一个两元组的列表。每个元素为:( 选项串, 附加参数) 。如果没有附加参数则为空串'' 。
  6. 整个过程使用异常来包含,这样当分析出错时,就可以打印出使用信息来通知用户如何使用这个程序。
import sys
import getopt # run this file
if __name__ =='__main__':
print(sys.argv)
# python 1206.py -h -v 123 -o mark --output=123 --foo=345 --fre=12.3
opts, args = getopt.getopt(sys.argv[1:], 'hv:o:', ['output=', 'foo=', 'fre='])
print(opts,args)
$ python 1206.py -h -v 123 -o mark --output=123 --foo=345 --fre=12.3
['1206.py', '-h', '-v', '123', '-o', 'mark', '--output=123', '--foo=345', '--fre=12.3']
[('-h', ''), ('-v', '123'), ('-o', 'mark'), ('--output', '123'), ('--foo', '345'), ('--fre', '12.3')] []
$ python 1206.py -h -v 123 -o mark --output=123 --foo=345 --fre=12.3 pppppp
['1206.py', '-h', '-v', '123', '-o', 'mark', '--output=123', '--foo=345', '--fre=12.3', 'pppppp']
[('-h', ''), ('-v', '123'), ('-o', 'mark'), ('--output', '123'), ('--foo', '345'), ('--fre', '12.3')] ['pppppp']

python处理命令行参数的更多相关文章

  1. awk,perl,python的命令行参数处理

    Python,Perl,Bash命令行参数 Part I 日常经常性的和Perl,Python,Bash打交道,但是又经常性的搞混他们之间,在命令行上的特殊性和index的区别,Python真的是人性 ...

  2. Python 的命令行参数处理 optparse->argparse

    optaprse自2.7版开始弃用:弃用optparse模块,不会进一步开发,将继续开发argparse模块作为替代. 但是用习惯了optparse,还是很好用的撒. optparse使用起来,相比旧 ...

  3. Python 获得命令行参数的方法

    如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?需要模块:sys参数个数:len(sys.argv)脚本名:    sys.argv[0]参数1 ...

  4. python解析命令行参数

    常常需要解析命令行参数,经常忘记,好烦,总结下来吧. 1.Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: sys.argv 是命令行参数列表 参数个数:len(sys.a ...

  5. python 处理命令行参数--转载

    标题写了那么久,现在现在才有时间,整理下自己的思路.首先先总结下自己对sys模块的理解.手册上对sys的描述是系统参数和系统函数,这里的系统实际上是python解释器.这个模块提供了用户可以访问的解释 ...

  6. python中命令行参数

    python中的命令行参数 python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问.命令行参数是调用某个程序时除程序名外的其他参数. sys.argv是命令行参数的列表 le ...

  7. Python 中命令行参数解析工具 docopt 安装和应用

    什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制. ...

  8. Python的命令行参数(argparse)

    参考:https://www.cnblogs.com/lindaxin/p/7975697.html 参考:https://www.cnblogs.com/dengtou/p/8413609.html ...

  9. python之命令行参数解析模块argparse

    """argparse模块使得写用户友好性命令行接口很容易,程序定义所需要的参数,argparse会从ays.argv中提取出这些参数.argparse模块也能自动的产生 ...

随机推荐

  1. underscore

    http://www.byywee.com/page/M0/S819/819654.html http://www.haogongju.net/art/1127253 http://hi.baidu. ...

  2. 开发过程遇到的bug

    1.transition和display的冲突: 解决方法:1)使用visibility:2)使用js的setTimeout使动画延迟:3)可以改变高度: 2.form表单提交和js中的提交冲突 解决 ...

  3. python2 和 python3 区别

    python2 python 2 必须加object加入后是新式类 python 2 不加object是经典类 class HTTP(object): # 经典类和新式类 @staticmethod ...

  4. 记录一下使用Ubuntu16.0.4配置和使用docker registry

    h1, h2, h3, h4, h5, h6, p, blockquote { margin: 5px; padding: 5; } body { font-family: "Helveti ...

  5. tred_extract_EDED_new

    # -*- coding:utf-8 -*- import re ''' 适应新版本 ''' year='17a'#用户自定义 ss='./data/'#根目录 filename = ss+'EDED ...

  6. 数据库优化之SQL语句优化-记录

    1. 操作符优化 (a) IN 操作符 从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查 ...

  7. JDBC技术(汇聚页)

    JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API, 换句话说:JDBC是用于在Java ...

  8. 架构实战项目心得(十):基于spring-ladp的统一用户中心结构设计以及代码结构设计

    一.目录设计 1 公司 2 部门 3 注册人员 4 层级人员 二.规则 1 注册 自行注册人员放到模拟公司的目录下,等所属公司组织结构建立完毕,将此人员迁移到所属公司(或者删除此人员,所属公司新建此人 ...

  9. Win7多用户同时登陆

    软件提供下载: http://pan.baidu.com/s/1o6FQv70

  10. overlay和overlay2的区别

    docker作为一个容器平台,它有一套自己的存储系统.它支持的driver有overlay,overlay2, aufs等等. 这篇文章主要分析overlay和overlay2的区别. overlay ...