python 命令-python 处理命令行参数
点击(此处)折叠或打开
#!/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 处理命令行参数相关推荐
- Python必备基本技能——命令行参数args详解
Python必备基本技能--命令行参数args详解 1. 效果图 2. 源码 2.1 简单命令行参数 2.1 轮廓检测源代码 参考 这篇博客将介绍一项开发人员.工程师和计算机科学家必备的技能--命令行 ...
- python命令行参数解析OptionParser类用法实例
python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from opt ...
- Python命令行参数解析模块------argparse
首先,argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广 ...
- Python 获得命令行参数的方法
本篇将介绍python中sys, getopt模块处理命令行参数 如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys 参数个数: ...
- python使用argparse解析命令行参数
python使用argparse解析命令行参数 你的程序如何能够解析命令行选项(位于sys.argv中) #示意使用sys.argv进行参数解析: #注意,sys.argv中第0个索引是函数本身,所以 ...
- Python中最好用的命令行参数解析工具
Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...
- [转]Python 命令行参数和getopt模块详解
FROM : http://www.tuicool.com/articles/jaqQvq 有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Pyt ...
- Python命令行参数学习
man python 查看python的帮助文件 命令行参数: -B Don't write .py[co] files on import. See ...
- python命令行参数处理
使用sys.argv获得参数,使用getopt和optparse两个内建的模块处理命令行参数: getopt,只能简单处理 命令行参数: optparse,它功能强大,而且易于使用,可以方便地生成标准 ...
- python argvparser_Python命令行参数argv和argparse该如何使用
概述 运行python脚本时通过命令行方式传入运行参数通常有以下两种自建方式: sys.argv - 简洁 argparse - 丰富,可自定义 下面详细说一下具体时使用 argv # test_ar ...
最新文章
- Python 数据库操作 psycopg2
- 以太网迎新增长 专家眼中的车载以太网及AVB技术
- Spring-ApplicationContext解读
- oracle创建表空间.创建用户.创建表
- Web 前端技术图谱-菜鸟教程
- P3565 [POI2014]HOT-Hotels(树形dp+长链剖分)
- Accumulator
- UIActionSheet 多项弹出框
- 南通大学python期末考试试卷_模拟试卷C
- html中2d变形兼容性,CSS3(3)---2D变形(transform)
- 【Python】@ 操作符
- 如何用python编写财务记账软件_python实现日常记账本小程序
- 腾讯云通信、网易云通信、极光IM、阿里百川、容云通信国内云通信抉择之路 看云通信市场风云与掌控力 带腾讯云通信实战代码demo
- 第一章 基本架设服务器流程
- RAID技术全解图解-RAID0、RAID1、RAID5、RAID100【转】
- 与一名上海学生深度交流上大学的事
- threshold 阈值,阀值,阙值
- 43岁,外企经理,公司不和我续签了
- docker一个镜像启动多个容器的操作
- 机械振动系统的matlab仿真分析-郭
热门文章
- BZOJ3743 COCI2015Kamp(树形dp)
- Mybatis怎么在mapper中用多个参数
- C++ STL库的总结以及实现原理
- Spark官方文档——本地编写并运行scala程序
- ubuntu下eclipse中键盘失灵
- [转]C#开发高性能Log Help类设计开发
- SetWindowRgn注意点
- Asp.net 序列化应用实例(转载)
- 学习python需要什么基础-要学Python编程,需要什么样的基础呢?想找这方面工作...
- 怎么把写好的python代码打包成exe-【Python之点到为止】如何优雅的将你的代码打包成EXE...