python命令解析_python命令行参数解析示例应用

本文介绍了Python中处理命令行参数的两种方法:sys.argv和getopt模块。sys.argv用于获取命令行参数列表,而getopt模块提供了更灵活的选项和参数处理,支持短选项和长选项模式。通过getopt.getopt函数,可以方便地解析选项和参数,用于实现程序的定制化行为。文章还给出了多个示例,展示了如何在实际应用中使用这两个模块来处理命令行输入。
摘要由CSDN通过智能技术生成

一、sys.argv[]

包含命令行参数的字符串列表,通过下标获取参数。

例如:

#!/usr/bin/python

# Filename: using_sys.py

import sys

print 'The command line arguments are:'

for i in sys.argv:

print i

print '\n\nThe PYTHONPATH is', sys.path, '\n'

print argv[1]

argv[0]表示文件本身路径。 当然,agv[]也可存放多个值

二、getopt

用于抽出命令行选项和参数,也就是sys.argv。

命令行选项使得程序的参数更加灵活。支持短选项模式和长选项模式。

import getopt

#python scriptname.py -f 'hello' --directory-prefix=/home -t --form    at 'a' 'b'

shortargs = 'f:t'

longargs = ['directory-prefix=', 'format', '--f_long=']

opts, args = getopt.getopt( sys.argv[1:], shortargs, longargs )

getopt函数的格式是getopt.getopt ( [命令行参数列表], "短选项", [长选项列表] )

短选项名后的冒号(:)表示该选项必须有附加的参数。

长选项名后的等号(=)表示该选项必须有附加的参数。

返回opts和args。

opts是一个参数选项及其value的元组( ( '-f', 'hello'), ( '-t', '' ), ( '--format', '' ), ( '--directory-prefix', '/home' ) )

args是一个除去有用参数外其他的命令行输入 ( 'a', 'b' )

然后遍历opts便可以获取所有的命令行选项及其对应参数了。

遍历opts可以获取所有命令的选项及参数,

for opt, val in opts:

if opt in ( '-f', '--f_long' ):

pass

if ....

分析不同参数,做不同处理。 一般,选项参数列表会被打印作为帮助选项。

三、python Documentation中也给出了getopt的典型使用方法:

import getopt, sys

def main():

try:

opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])

except getopt.GetoptError, err:

# print help information and exit:

print str(err) # will print something like "option -a not recognized"

usage()

sys.exit(2)

output = None

verbose = False

for o, a in opts:

if o == "-v":

verbose = True

elif o in ("-h", "--help"):

usage()

sys.exit()

elif o in ("-o", "--output"):

output = a

else:

assert False, "unhandled option"

# ...

if __name__ == "__main__":

main()

四、示例应用

一个简单的例子见下:

import getopt, sys

opts, args = getopt.getopt(sys.argv[1:], "hi:o:", ["help", "input=", "output="])

def usage():

print sys.argv[0] + ' -i inputfile -o outputfile'

print sys.argv[0] + ' -h #get help info'

input_file, output_file = '', ''

for op, value in opts:

if op == '-i' or op == '--input':

input_file = value

elif op == '-o' or op == '--output':

output_file = value

elif op == '-h':

usage()

sys.exit()

在命令行中运行的形式可以为以下几种:

$ python test.py -i ./input.txt -o ./output.txt

$ python test.py --input=./input.txt -o ./output.txt

$ python test.py -i ./input.txt --output=./output.txt

$ python test.py --input=./input.txt --output=./output.txt

$ python test.py -h

阅读(8142) | 评论(0) | 转发(0) |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值