点击(此处)折叠或打开

#!/usr/bin/env python

import sys

def main(argv):

for arg in argv:

print arg

if __name__ == '__main__':

main(sys.argv)

那我们开始调用测试脚本:

python PyTest.py 输出结果:PyTest.py, 原始列表为['PyTest.py']

python PyTest.py -c 0 a:1:b 输出结果为:PyTest.py -c 0 a:1:b。说明解释器是以空格或者制表符来区分参数。

python /root/python_scripts/PyTest.py 输出结果为:

/root/python_scripts/PyTest.py。记录的是绝对路径。

chmod +x PyTest.py;./PyTest.py 输出结果为:

./PyTest.py

/root/python_scripts/PyTest.py 输出结果为:

/root/python_scripts/PyTest.py

注:说明sys.argv[0]保存的是可执行程序名,后面是命令行参数,以空格为区分点。

下面介绍下C语言风格的命令行解析模块getopt。这个支持短命令(-a)和长命令模式(--add)。getopt的调用方式为:getopt.getopt(args, 'hvo:')或者getopt.getopt(args,'hvo:', ['help', 'version', 'output=']),如果只使用长命令,短命令参数必须是个空字符串。:表示参数后必须有参数,=表示长命令后必须有参数。

示例代码:

点击(此处)折叠或打开

#!/usr/bin/env python

import sys

import getopt

def Usage():

print 'PyTest.py usage:'

print '-h,--help: print help message.'

print '-v, --version: print script version'

print '-o, --output: input an output verb'

print '--foo: Test option '

print '--fre: another test option'

def Version():

print 'PyTest.py 1.0.0.0.1'

def OutPut(args):

print 'Hello, %s'%args

def main(argv):

try:

opts, args = getopt.getopt(argv[1:], 'hvo:', ['output=', 'foo=', 'fre='])

except getopt.GetoptError, err:

print str(err)

Usage()

sys.exit(2)

for o, a in opts:

if o in ('-h', '--help'):

Usage()

sys.exit(1)

elif o in ('-v', '--version'):

Version()

sys.exit(0)

elif o in ('-o', '--output'):

OutPut(a)

sys.exit(0)

elif o in ('--foo',):

Foo=a

elif o in ('--fre',):

Fre=a

else:

print 'unhandled option'

sys.exit(3)

if __name__ == '__main__':

main(sys.argv)19行: 调用函数时返回两个列表, 第一个列表保存参数和值的元组集合,第二个列表保存其他值,不在参数指定的所有值。

[root@node5 python_scripts]# ./PyTest.py --f

option --f not a unique prefix

PyTest.py usage:

-h,--help: print help message.

-v, --version: print script version

-o, --output: input an output verb

--foo: Test option

--fre: another test option

[root@node5 python_scripts]# ./PyTest.py --fo

option --foo requires argument

PyTest.py usage:

-h,--help: print help message.

-v, --version: print script version

-o, --output: input an output verb

--foo: Test option

--fre: another test option

这两个调用过程可以看到getopt可以进行唯一匹配。

[root@node5 python_scripts]# ./PyTest.py -h -v

PyTest.py usage:

-h,--help: print help message.

-v, --version: print script version

-o, --output: input an output verb

--foo: Test option

--fre: another test option

[root@node5 python_scripts]# ./PyTest.py -v -h

PyTest.py 1.0.0.0.1

这里可以看到解析顺序从前向后。

[root@node5 python_scripts]# ./PyTest.py -o a --output ab

Hello, a

[root@node5 python_scripts]# ./PyTest.py --output ab -o a

Hello, ab

这里可以看到实际上-o和--output是分开处理的。

从这里我们可以总结下getopt的特点:

1 getopt是从前到后解析

2 getopt不检查额外参数的合法性,需要自行检查

3 短命令行和长命令行是分开解析的。

稍后完善

模块optparse提供了OptionParser用来解析命令行,optparse在2.3引进,2.7弃用,2.7以后用argparse替代。

OptionParser将自动生成帮助信息。

OptionParser的使用过程

点击(此处)折叠或打开

from optparse import OptionParser导入OptionParser。

点击(此处)折叠或打开

parser = OptionParser()生成OptionParser的一个实例

点击(此处)折叠或打开

parser.add_option('c', 'clear', dest='clear_option', default=False, action='store_true', help = 'Clean origin configurations and databases.')添加命令行选项

点击(此处)折叠或打开

(options, args) = parser.parse_args(sys.argv[1:])解析命令行

options.clear_option 使用命令行。

python 创建目录

os.mkdir() 创建一个非递归目录

os.makedirs() 创建一个递归目录

python 命令-python 处理命令行参数相关推荐

  1. Python必备基本技能——命令行参数args详解

    Python必备基本技能--命令行参数args详解 1. 效果图 2. 源码 2.1 简单命令行参数 2.1 轮廓检测源代码 参考 这篇博客将介绍一项开发人员.工程师和计算机科学家必备的技能--命令行 ...

  2. python命令行参数解析OptionParser类用法实例

    python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下:     from opt ...

  3. Python命令行参数解析模块------argparse

      首先,argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广 ...

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

    本篇将介绍python中sys, getopt模块处理命令行参数 如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys 参数个数: ...

  5. python使用argparse解析命令行参数

    python使用argparse解析命令行参数 你的程序如何能够解析命令行选项(位于sys.argv中) #示意使用sys.argv进行参数解析: #注意,sys.argv中第0个索引是函数本身,所以 ...

  6. Python中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  7. [转]Python 命令行参数和getopt模块详解

    FROM : http://www.tuicool.com/articles/jaqQvq 有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Pyt ...

  8. Python命令行参数学习

    man python 查看python的帮助文件 命令行参数:        -B     Don't write .py[co] files on import.               See ...

  9. python命令行参数处理

    使用sys.argv获得参数,使用getopt和optparse两个内建的模块处理命令行参数: getopt,只能简单处理 命令行参数: optparse,它功能强大,而且易于使用,可以方便地生成标准 ...

  10. python argvparser_Python命令行参数argv和argparse该如何使用

    概述 运行python脚本时通过命令行方式传入运行参数通常有以下两种自建方式: sys.argv - 简洁 argparse - 丰富,可自定义 下面详细说一下具体时使用 argv # test_ar ...

最新文章

  1. Python 数据库操作 psycopg2
  2. 以太网迎新增长 专家眼中的车载以太网及AVB技术
  3. Spring-ApplicationContext解读
  4. oracle创建表空间.创建用户.创建表
  5. Web 前端技术图谱-菜鸟教程
  6. P3565 [POI2014]HOT-Hotels(树形dp+长链剖分)
  7. Accumulator
  8. UIActionSheet 多项弹出框
  9. 南通大学python期末考试试卷_模拟试卷C
  10. html中2d变形兼容性,CSS3(3)---2D变形(transform)
  11. 【Python】@ 操作符
  12. 如何用python编写财务记账软件_python实现日常记账本小程序
  13. 腾讯云通信、网易云通信、极光IM、阿里百川、容云通信国内云通信抉择之路 看云通信市场风云与掌控力 带腾讯云通信实战代码demo
  14. 第一章 基本架设服务器流程
  15. RAID技术全解图解-RAID0、RAID1、RAID5、RAID100【转】
  16. 与一名上海学生深度交流上大学的事
  17. threshold 阈值,阀值,阙值
  18. 43岁,外企经理,公司不和我续签了
  19. docker一个镜像启动多个容器的操作
  20. 机械振动系统的matlab仿真分析-郭

热门文章

  1. BZOJ3743 COCI2015Kamp(树形dp)
  2. Mybatis怎么在mapper中用多个参数
  3. C++ STL库的总结以及实现原理
  4. Spark官方文档——本地编写并运行scala程序
  5. ubuntu下eclipse中键盘失灵
  6. [转]C#开发高性能Log Help类设计开发
  7. SetWindowRgn注意点
  8. Asp.net 序列化应用实例(转载)
  9. 学习python需要什么基础-要学Python编程,需要什么样的基础呢?想找这方面工作...
  10. 怎么把写好的python代码打包成exe-【Python之点到为止】如何优雅的将你的代码打包成EXE...