如何解析命令行命令--sys、optparse

在工作中我们经常要制定运行脚本的一些参数,因为有些东西是随着我么需求要改变的,所以在为们写程序的时候就一定不能把写死,这样我们就要设置参数,然后通过某种方式取它。

方法一:sys.argv[]

sys.argv[]是用来获取命令行参数的,可以说是一个从程序外部获取参数的桥梁,由于我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。

下面我们通过一个极简单的t.py程序的运行结果来说明它的用法。
使用sys下的argv[n]去取命令行的第n个指令

例:
在t.py文件中写代码:

import sys
for i in range(5):
    a=sys.argv[i]
    print('第%i位置的内容是%a:'%(i,a))

然后再下面的Terminal中写,并执行Terminal中的命令

python t.py a b c d

结果显示如下:
在这里插入图片描述

方法二:使用模块optparse。

optparse,是一个更够让程序设计人员轻松设计出简单明了、易于使用、符合标准的Unix命令例程式的Python模块。生成使用和帮助信息。

首先你必须导入该类,并创建一个OptionParser对象,然后再使用parser.add_option(…)待定义命令行参数,及其帮助文档每个命令行参数就是由参数名字符串和参数属性组成的。如 -f 或者 file 分别是长短参数名:

   parser.add_option("-f", "--file", ...)

当你将所有的命令行参数都定义好了的时候,我们需要调用parse_args()方法赖际熙add_option()函数依次传入的参数:

options,args  =  parser.parser_args()

options 是一个字典,其key字典中的关键字可能会是是我们所有的add_option()函数中的dest参数值,其对应的value值,是命令行输入的对应的add_option()函数的参数值。

args,它是一个由 positional arguments 组成的列表,通俗来说就是除add_option()函数中定义以外的值存放于args中。

下面通过具体例子来进行更直观的介绍。

1. 通过命名行操作

import optparse
op=optparse.OptionParser()
op.add_option("-s","--server",dest="server")
op.add_option("-p","--port",dest="port")
#optParser.parse_args() 剖析并返回一个字典和列表,
#字典中的关键字是我们所有的add_option()函数中的dest参数值,
#而对应的value值,是add_option()函数中的default的参数或者是
#由用户传入optParser.parse_args()的参数
options,args=op.parse_args()
print("options的内容是",options)
print('optparse的类型是:',type(optparse))
print("server的内容是:",options.server)
print("args中的内容是",args)

在Terminal中执行的代码为:
注意:首先要通过cd 文件夹名找到你执行的t.py所在的文件夹,然后再执行下面的代码,运行t.py 并对里面的变量赋值

E:\python_learn\python_cord>python t.py -s 127.0.0.1 -p 8080 a b c

结果:

options的内容是 {'server': '127.0.0.1', 'port': '8080'}
optparse的类型是: <class 'module'>
server的内容是: 127.0.0.1
args中的内容是 ['a', 'b', 'c']

与方法一相比我们可以看到,optparse的优点在于可以通过自定义的名字直接找到其对应的值,省去了原来的循环操作。

2. 不使用命令行,直接在py文件中操作:

import optparse
op=optparse.OptionParser()
op.add_option("-s","--server",dest="server")
op.add_option("-p","--port",dest="port")
#optParser.parse_args() 剖析并返回一个字典和列表,
#字典中的关键字是我们所有的add_option()函数中的dest参数值,
#而对应的value值,是add_option()函数中的default的参数或者是
#由用户传入optParser.parse_args()的参数
fakeArgs=['-s','127.0.0.1','-p','8080','a','b','c']
options,args=op.parse_args(fakeArgs)
print("options的内容是",options)
print('optparse的类型是:',type(optparse))
print("server的内容是:",options.server)
print("args中的内容是",args)

结果:

D:\Anaconda\python.exe E:/python_learn/python_cord/t.py
options的内容是 {'server': '127.0.0.1', 'port': '8080'}
optparse的类型是: <class 'module'>
server的内容是: 127.0.0.1
args中的内容是 ['a', 'b', 'c']

Process finished with exit code 0

将想输入的数据赋值给fakeArgs,然后将fakeArgs传入op.parse_args()

注意:通过对比上面两种方式,我们对optParser.parser_args()函数传入参数列表和,没有传入参数列表的区别有了一定了解。在这里我么的fakeArgs参数列表代替了我们在命令行输入的参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值