未加星标

Python--命令行参数解析Demo

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二05 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

写没有操作界面的程序时,最讨厌的就是参数解析问题,尤其是很多参数那种,下面是一个小Demo,拿出来与各位分享:


1 # -*- coding:utf8 -*-
2 import os
3 import datetime
4 import sys
5 from optparse import OptionParser
6
7
8 def get_user_paras():
9 try:
10 opt = OptionParser()
11 opt.add_option('--host_ip',
12 dest='host_ip',
13 type=str,
14 help='the ip of the check host')
15 opt.add_option('--run',
16 action="store_true",
17 dest="is_run",
18 default=False,
19 help="run the scripts")
20 opt.add_option('--view',
21 action="store_false",
22 dest="is_run",
23 default=False,
24 help="only view but not run the scripts")
25 opt.add_option('--show_type',
26 dest="show_type",
27 type=int,
28 default=0,
29 help="0 or 1, 0 only show the simple data, 1 show the full data")
30 (options, args) = opt.parse_args()
31 is_valid_paras = True
32 error_messages = []
33 host_ip = options.host_ip
34 is_run = options.is_run
35 show_type = options.show_type
36 if not host_ip:
37 error_messages.append("host_ip must be set;")
38 is_valid_paras = False
39 if show_type not in [0, 1]:
40 error_messages.append("show_type only can be 0 or 1;")
41 is_valid_paras = False
42
43 if is_valid_paras:
44 user_paras = {"host_ip": host_ip, "is_run": is_run, "show_type": show_type}
45 return user_paras
46 else:
47 for error_message in error_messages:
48 print(error_message)
49 return None
50 except Exception as ex:
51 print("exception :{0}".format(str(ex)))
52 return None
53
54
55 def main():
56 user_paras = get_user_paras()
57 if user_paras is None:
58 sys.exit(0)
59 info = "host_ip:{0}, is_run:{1}, show_type:{2}"
60 info = info.format(user_paras["host_ip"],
61 user_paras["is_run"],
62 user_paras["show_type"])
63 print(info)
64
65
66 if __name__ == '__main__':
67 main()

当使用OptionParser时,会自动增加--help和-h参数,也会自动生成参数帮助,如:


Python--命令行参数解析Demo

对于代码:


opt.add_option('--run', action="store_true", dest="is_run", default=False, help="run the scripts")

--run 表示参数名

action表示将参数值如何处理,常用的有store/store_true/store_false,store即字面意思,store_true即将True作为参数值传递给参数,store_false将False作为参数值传递给参数

dest表示命令行参数解析后的参数名,

上面代码中--run作为命令行参数传递进来,由于action为store_true,因此参数值为True,解析后的参数名为is_run,通过(options, args) = opt.parse_args() 赋值后,便可以使用options.is_run来放问参数值。

更多帮助:https://docs.python.org/2/library/optparse.html

##========================================================##

对于参数较多或者参数值较大的情况,个人还是比较喜欢使用参数配置文件来实现,简单而且方便编辑,如创建一个run_config.py文件:


# -*- coding:utf8 -*-
# run config
class RunConfig(object):
is_run = True
show_status = 1
host_ip = "192.167.1.1"
run_scripts = """
SELECT *
FROM TB001
WHERE ID >1000
AND C1<300
"""

然后在其他文件中访问:


# -*- coding:utf8 -*-
from run_config import RunConfig
def main():
print("is_run:{0}, host_ip:{1}".format(RunConfig.is_run,RunConfig.host_ip))
print("run_scripts:{0}".format(RunConfig.run_scripts))
if __name__ == '__main__':
main()

简单粗暴,没那么麻烦,土豹子的做法哈!

##===================================================##


Python--命令行参数解析Demo

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: Python
分页:12
转载请注明
本文标题:Python--命令行参数解析Demo
本站链接:http://www.codesec.net/view/483319.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(28)