python解析命令行参数
常常需要解析命令行参数,经常忘记,好烦,总结下来吧。
1.Python 中也可以所用 sys 的 sys.argv 来获取命令行参数:
sys.argv 是命令行参数列表
参数个数:len(sys.argv)脚本名: sys.argv[0]
参数1: sys.argv[1]
示例代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*- import sys print('参数个数为: ' + str(len(sys.argv)) + '个参数。')
print("脚本名:" + sys.argv[0])
for i in range(1, len(sys.argv)):
print("参数" + str(i) + ': ' + sys.argv[i])
2.getopt模块
getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式(-)和长选项模式(--)。
该模块提供了两个方法及一个异常处理来解析命令行参数。
getopt.getopt 方法
getopt.getopt 方法用于解析命令行参数列表,语法格式如下:
getopt.getopt(args, options[, long_options])
方法参数说明:
args: 要解析的命令行参数列表。
options: 以列表的格式定义,options后的冒号(:)表示该选项必须有附加的参数,不带冒号表示该选项不附加参数。
long_options: 以字符串的格式定义,long_options 后的等号(=)表示如果设置该选项,必须有附加的参数,否则就不附加参数。
该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有'-'或'--'的参数。
另外一个方法是 getopt.gnu_getopt,这里不多做介绍。
Exception getopt.GetoptError
在没有找到参数列表,或选项的需要的参数为空时会触发该异常。
异常的参数是一个字符串,表示错误的原因。属性 msg 和 opt 为相关选项的错误信息。
示例代码如下:
# -*- coding:utf-8 -*- import sys, getopt def main(argv):
inputfile = ""
outputfile = "" try:
# 这里的 h 就表示该选项无参数,i:表示 i 选项后需要有参数
opts, args = getopt.getopt(argv, "hi:o:",["infile=", "outfile=", "version", "help"])
#第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有'-'或'--'的参数
except getopt.GetoptError:
print('test_arg.py -i <inputfile> -o <outputfile>')
print('or: test_arg.py --infile=<inputfile> --outfile=<outputfile>')
print('or: test_arg.py --version --help')
sys.exit(2) if len(args) > 0: #表示有未识别的参数格式
print('test_arg.py -i <inputfile> -o <outputfile>')
print('or: test_arg.py --infile=<inputfile> --outfile=<outputfile>')
print('or: test_arg.py --version --help')
sys.exit(1)
else:
for opt, arg in opts:
if opt in ("-h", "--help"):
print('test_arg.py -i <inputfile> -o <outputfile>')
print('or: test_arg.py --infile=<inputfile> --outfile=<outputfile>')
print('or: test_arg.py --version --help') sys.exit()
elif opt in ("-i", "--infile"):
inputfile = arg
elif opt in ("-o", "--outfile"):
outputfile = arg
elif opt in ("--version"):
print('0.0.1')
sys.exit() print('Input file : ', inputfile)
print('Output file: ', outputfile) if __name__ == "__main__":
main(sys.argv[1:])
python解析命令行参数的更多相关文章
- optparse模块解析命令行参数的说明及优化
一.关于解析命令行参数的方法 关于“解析命令行参数”的方法我们一般都会用到sys.argv跟optparse模块.关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考: ...
- boost之program_options库,解析命令行参数、读取配置文件
一.命令行解析 tprogram_options解析命令行参数示例代码: #include <iostream> using namespace std; #include <boo ...
- linux 中解析命令行参数(getopt_long用法)
linux 中解析命令行参数(getopt_long用法) http://www.educity.cn/linux/518242.html 详细解析命令行的getopt_long()函数 http:/ ...
- C语言中使用库函数解析命令行参数
在编写需要命令行参数的C程序的时候,往往我们需要先解析命令行参数,然后根据这些参数来启动我们的程序. C的库函数中提供了两个函数可以用来帮助我们解析命令行参数:getopt.getopt_long. ...
- Windows下解析命令行参数
linux通常使用GNU C提供的函数getopt.getopt_long.getopt_long_only函数来解析命令行参数. 移植到Windows下 getopt.h #ifndef _GETO ...
- Python 中命令行参数解析工具 docopt 安装和应用
什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制. ...
- python处理命令行参数
直接从命令行执行py文件的时候如果带有参数,如何获取这些参数,如何解析? http://blog.chinaunix.net/uid-20786165-id-3182268.html sys.argv ...
- awk,perl,python的命令行参数处理
Python,Perl,Bash命令行参数 Part I 日常经常性的和Perl,Python,Bash打交道,但是又经常性的搞混他们之间,在命令行上的特殊性和index的区别,Python真的是人性 ...
- Python 的命令行参数处理 optparse->argparse
optaprse自2.7版开始弃用:弃用optparse模块,不会进一步开发,将继续开发argparse模块作为替代. 但是用习惯了optparse,还是很好用的撒. optparse使用起来,相比旧 ...
随机推荐
- 为什么用freemarker视图?
在java领域,表现层技术主要有三种:jsp.freemarker.velocity. jsp是大家最熟悉的技术优点:1.功能强大,可以写java代码2.支持jsp标签(jsp tag)3.支持表达式 ...
- cocos2d-x 保持屏幕点亮及自动变灰
很早之前遇到的问题,现在记录一下.有一家Android渠道(抱歉,时间太长了已经记不大清楚是哪一家了 oppo/联想/酷派?)在我们提交新版本时拒绝了,理由是:手机背光状态下,屏幕不会自动变灰. 这里 ...
- Visual Studio 2013 智能提示功能消失解决办法
Visual Studio 2013中,智能提示功能突然用不了,查了一下,使用命令行重置VS的方法解决了这个问题.步骤如下: 开始菜单 -->所有程序-->Visual Studio 20 ...
- LaTeX技巧23:BIBTeX制作参考文献
23BibTeX 是一种格式和一个程序,用于协调LaTeX的参考文献处理.BibTeX 使用数据库的的方式来管理参考文献. BibTeX 文件的后缀名为 .bib . 先来看一个例子 @article ...
- executing external native build for cmake
进一步调试的方法: 在Android studio下方打开terminal,然后: gradlew build --stacktrace
- Cannot create container for service peer1.org2.example.com: Conflict. 解决方案
I have a docker-compose.yaml file defining 5 services: orderer.example.com peer0.org1.example.com pe ...
- 突发奇想之:源码及文档,文档包括源码---xml格式的源码,文档源码合并;注释文档化,文档代码化;
目前源码和文档一般都是分开的,我在想为什么 源码不就是最好的文档么? 但是一般源码都是文本text的,格式化需要人为统一规范,所以源码中的文档在现实中不是那么的易于实践. 而且 源码 不能包括图片.附 ...
- uva 10344 23 out of 5 凑运算结果 全排列+dfs
五个数三个运算符号,排列之后凑成结果为23,不考虑优先级. 很水,数据量也不大,先生成五个数的全排列,用dfs找出结果能否为23即可. 代码: #include <cstdio> #inc ...
- 重启Windows的PowerShell
这么简单的一个命令都单独写一篇blog, 是不是太无耻了? 好吧, 谁让咱不会呢. 学会了就来一篇. 呵呵. Restart-Computer 来源 ================ http:/ ...
- Bootstrap风格button
一直非常喜欢Bootstrap的按钮风格,仿照Bootstrap做了一套按钮.在ie6/7/8/9/10/11.chrome.firefox下能正常使用. ie6/7/8不支持css3的样式.按钮在这 ...