在很多编程语言中,运行程序可以直接使用function(a,b,……)运行程序,但是在python中就无法实现,那么我们如何在命令行中传递参数呢?在python的中,有一个argparse包,能够实现。
当遇到需要参数的情况时,有以下三种处理方法:
1. 直接给定
这种方法虽然实现起来方便,但是灵活性非常差,每次都需要打开python文件修改参数。
2. 手动解析
这种方法就是写一个小代码段用来对输入的命令进行解析,例如:
import sys
def TestSys():
for arg in sys.argv[1: ] : #对输入的第二个参数到最后,arg[0] 为第一个参数
print arg
这个方法也不错,缺点就是每次输入的格式必须正确,多一个少一个都不行。
3. 自动解析
就是使用python中的包argparse来解析,下面用一个实例来说明其用法。
import argparse #导入包
parser = argparse.ArgumentParser() #创建一个解析处理器
#下面设定需要处理的参数,格式如下:
#parser.add_argument('-shortname','--fullname',type=?,default=?)#参数数量可选
parser.add_argument('para') #这种格式不满足上述格式,但是是正确的,并且是最简单的。它表示
#para这个参数是必须有的
parser.add_argument('-shortname','--fullname')#存在简称和全程的格式在输入时可有可无
parser.add_argument('--fullnage',type=?,default=?)#当然不使用简称也是可以的
……
……
#可以设置多个参数
#获取参数值
args = parser.parse_args()
para = args.fullname
实例如下(可直接运行):
#!/usr/bin/env python # encoding: utf-8 from PIL import Image import argparse parser = argparse.ArgumentParser() parser.add_argument('file') #输入文件 parser.add_argument('-ob', '--output') #输出文件 parser.add_argument('--width', type = int,default=80) #输出字符画宽 parser.add_argument('--height', type = int,default = 80) #输出字符画高 args = parser.parse_args() IMG = args.file WIDTH = args.width HEIGHT = args.height OUTPUT = args.output print IMG print WIDTH print HEIGHT print OUTPUT
在命令行中输入:
python c.py ascii_dora.png -o output.txt --width 100 --height 80
结果如下:
ascii_dora.png #获得了文件名
100 #获得了输入值100
80 #获得了默认值
output.txt #获得输出文件名
Another example:
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument('-m','--map')
parser.add_argument('-d','--dir', nargs='+')
parser.add_argument('-o','--output')
args = parser.parse_args()
mapfile = args.map
srcdir = args.dir
output = args.output
假设文件名为a.py, 则示例命令为:python a.py -m b.map -d c d f -o outpt.txt