文档章节

[Python进阶] Python命令行参数

Eappo_Geng
 Eappo_Geng
发布于 2018/09/21 15:56
字数 700
阅读 135
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

Python 获得命令行参数的方法

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

解析命令行参数

Python提供了一个getopt模块,可用于解析命令行选项和参数。

该模块提供了两个功能和异常,以启用命令行参数解析。

getopt.getopt方法此方法解析命令行选项和参数列表。以下是此方法的简单语法

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


Pythongetopt.GetoptError异常

当在参数列表中有一个无法识别的选项,或者当需要一个参数的选项不为任何参数时,会引发这个异常。
异常的参数是一个字符串,指示错误的原因。 属性msg和opt给出错误消息和相关选项。

import sys, getopt

def main(argv):
    inputfile = ''
    outputfile = ''

    try:
        opts, args = getopt.getopt(argv, "hi:o:g:", ['help', 'ifile=', "ofile="])
        # 长选项'='相当于短选项的':'
        print(opts)  # 打印参数与值 [('-i', 'in'), ('-o', 'out')]

    except getopt.GetoptError as e:
        print(e)
        sys.exit(-2)

    for opt, arg in opts:
        if opt in ('-h', '--help'):
            print('usage: command_line_usage.py -i <inputfile> -o <outputfile>')
            sys.exit()
        elif opt in ("-i", "--ifile"):
            inputfile = arg
        elif opt in ("-o", "--ofile"):
            outputfile = arg

    print('Input file is "', inputfile)
    print('Output file is "', outputfile)

if __name__ == "__main__":
    main(sys.argv[1:])  # 要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。

代码解释:
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="])

D:\TestFPython>python 1_1_getopt.py -i in -o out
[('-i', 'in'), ('-o', 'out')]
Input file is " in
Output file is " out

 

© 著作权归作者所有

下一篇: 安装与配置
Eappo_Geng
粉丝 7
博文 130
码字总数 144289
作品 0
徐汇
程序员
私信 提问
加载中

评论(0)

Python网络爬虫实战-Scrapy视频教程 Python系统化项目实战课程 Scrapy技术课程

课程目录 01.scrapy是什么.mp4 Python实战-02.初步使用scrapy.mp4 Python实战-03.scrapy的基本使用步骤.mp4 Python实战-04.基本概念介绍1-scrapy命令行工具.mp4 Python实战-05.本概念介绍2-s...

osc_271igh42
2018/06/21
17
0
【Python Web学习路线】

新手如何快速入门Python Web 本专题分为4个阶段,包含Python基础语法入门到高级进阶和Python的三大主流框架 Flask、Django、Tornado。 第一阶段 Python基础 如何学习Python? Python 面向对象...

osc_eviv4ku7
2019/03/13
64
0
【原创】第二章、Django安装

  点击上方“java进阶架构师”,选择右上角“置顶公众号”   20大进阶架构专题每日送达      安装Django   因为Django程序是纯Python代码,所以用户在安装完Python环境后,可以利用...

java进阶架构师
2019/11/03
0
0
[转]optionParser模块的使用方法

Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,《Deep in python》一书中也有提到,只能简单处理 命令行参数; 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成...

阿木阿木
2014/03/08
84
0
Python初学者资源整理 - 知乎

对于一个初学编程的人来说,从python开始是一个非常不错的选择,而且现在很多学校都已经将Python作为入门的编程语言了,在目前特别火的机器学习、人工智能领域,Python可以说是标配的编程语言...

轮子工厂
2019/12/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

华为pat地址转换,以及内网web服务器发布

实验名称:华为pat地址转换,以及内网web服务器发布 实验拓扑图: 3. 实验目的 : 1.使内网通过pat转化出去上外网 2.使用静态pat做端口映射,发布web服务器 3.配置交换机远程登录 4. 地址规划 cl...

osc_2ch77h9m
3分钟前
0
0
php优化与模块

缓存 xcache eaccelerator zendopcache pdo_mysql扩展 memcache扩展 memcached扩展 mongo扩展 imagemagick imagick扩展...

osc_tb68dlqx
4分钟前
0
0
ATFX投资者教育活动凸显优势,助力客户有效应对市场波动

ATFX动态:新冠肺炎疫情全球传播期间,各国纷纷颁布“居家令”等措施,要求员工必须待在家里,因此也给各行各业带来了不同程度的影响。为了配合各国颁布的防疫措施,ATFX全球办事处依据各地的...

ATFX
4分钟前
10
0
ospf的工作原理

#谈起ospf(开放式最短路径优先),首先它是一种链路状态路由协议 它的工作过程主要有以下几点 : # 建立邻居表 hello : 仅仅使用hello报文,发现邻居,用于邻居的建立,维护,拆除 ospf 路由仅仅...

osc_4dgu16li
6分钟前
16
0
mysql5.7.20安装

rpm -qa | grep mysql yum -y install make gcc-c++ cmake bison-devel ncurses-devel cd /root wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz m......

osc_pl4ni83h
7分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部