前言
执行python脚本的命令行参数解析
一、sys模块
1. 了解命令行
代码如下(示例):
from sys import argv
print(argv)
执行结果(示例):
(base) H:\python\courseware\day67>python argprase_.py -o abc.json --time=00:00:00 --logfile=a.log
['argprase_.py', '-o', 'abc.json', '--time=00:00:00', '--logfile=a.log']
获取到的argv是一个列表,第一个是脚本名
2. 获取命令行信息
代码如下(示例):
from sys import argv
def parse_argv():
# 将命令行输入的信息存入字典中,可通过关键字获取命令行输入的信息,方便使用
ret = {}
name = ""
value = ""
for i,arg in enumerate(argv[1:]):
if arg.startswith("--"):
name,value = arg[2:].split("=")
elif arg.startswith('-'):
name = arg[1:]
value = argv[i+2]
if name:
ret[name] = value
return ret
if __name__ == '__main__':
print(parse_argv())
执行结果(示例):
(base) H:\python\courseware\day67>python argprase_.py -o abc.json --time=00:00:00 --logfile=a.log
{'o': 'abc.json', 'time': '00:00:00', 'logfile': 'a.log'}
二、argparse模块
代码如下(示例):
from argparse import ArgumentParser
# 自定义的函数
def parse_args():
parser = ArgumentParser()
# 第一个参数表示命令行指定的参数,dest表示解析之后返回的对象的属性名称
# help是-h显示帮助信息
# default 如果命令行没有输入这个参数则使用给定的默认值
# type如果需要转化类型,通过此参数指定转换的函数如int
parser.add_argument("-o",dest="outfile",help="指定输出文件位置,目前文件格式仅支持json和excel")
parser.add_argument("--logfile",help="指定日志文件",default="spider.log")
parser.add_argument("-l",dest="level",default="INFO",help="指定日志的等级")
# parser的解析函数parse_args()
return parser.parse_args()
if __name__ == '__main__':
ret = parse_args()
print(ret.outfile, ret.logfile, ret.level)
执行结果如下(示例):
(base) H:\python\courseware\day67>python argparse_2.py -o abc.json --logfile xx.log -l=info
abc.json xx.log info
# 总结 这里对文章进行总结: 通过命令行获取信息进行使用,此时获取的对象就拥有了outfile,level等属性