python实现读取命令行参数的方法


Posted in Python onMay 22, 2015

本文实例讲述了python读取命令行参数的方法。分享给大家供大家参考。具体分析如下:

如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?

需要模块:sys
参数个数:len(sys.argv)
脚本名:    sys.argv[0]
参数1:     sys.argv[1]
参数2:     sys.argv[2]

test.py:

import sys
print "脚本名:", sys.argv[0]
for i in range(1, len(sys.argv)):
  print "参数", i, sys.argv[i]
>>>python test.py hello world

脚本名:test.py
参数 1 hello
参数 2 world

python中使用命令行选项:

例如我们需要一个convert.py脚本。它的作用是处理一个文件,并将处理后的结果输出到另一个文件中。

要求该脚本满足以下条件:

1.通过-i -o选项来区别参数是输入文件还是输出文件.
>>> python convert.py -i inputfile -o outputfile
2.当不知道convert.py需要哪些参数时,用-h打印出帮助信息
>>> python convert.py -h

getopt函数原形:

getopt.getopt(args, options[, long_options])

convert.py:

import sys, getopt
opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
input_file=""
output_file=""
for op, value in opts:
  if op == "-i":
    input_file = value
  elif op == "-o":
    output_file = value
  elif op == "-h":
    usage()
    sys.exit()

代码解释:

a) sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。

b) "hi:o:": 当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号。所以"hi:o:"就表示"h"是一个开关选项;"i:"和"o:"则表示后面应该带一个参数。

c) 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。

getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)

长选项格式举例:

--version
--file=error.txt

让一个脚本同时支持短选项和长选项

getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python模拟enum枚举类型的方法小结
Apr 30 Python
python logging日志模块的详解
Oct 29 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
Numpy数组的保存与读取方法
Apr 04 Python
python抓取京东小米8手机配置信息
Nov 13 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
详解Python3迁移接口变化采坑记
Oct 11 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 Python
python函数调用,循环,列表复制实例
May 03 Python
浅析Python的命名空间与作用域
Nov 25 Python
python基础学习之生成器与文件系统知识总结
May 25 Python
python调试工具Birdseye的使用教程
May 25 Python
Python中返回字典键的值的values()方法使用
May 22 #Python
python复制文件的方法实例详解
May 22 #Python
在Python中操作字典之update()方法的使用
May 22 #Python
python判断图片宽度和高度后删除图片的方法
May 22 #Python
在Python中操作字典之setdefault()方法的使用
May 21 #Python
在Python中用keys()方法返回字典键的教程
May 21 #Python
Python中使用items()方法返回字典元素对的教程
May 21 #Python
You might like
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
Javascript倒计时代码
2010/08/12 Javascript
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
浅析js实现网页截图的两种方式
2019/11/01 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
用实例分析Python中method的参数传递过程
2015/04/02 Python
用Python实现换行符转换的脚本的教程
2015/04/16 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
Python 加密与解密小结
2018/12/06 Python
python next()和iter()函数原理解析
2020/02/07 Python
Python如何测试stdout输出
2020/08/10 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
大学运动会通讯稿
2015/07/18 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android
vue项目支付功能代码详解
2022/02/18 Vue.js
一条慢SQL语句引发的改造之路
2022/03/16 MySQL