Python -- Command Line Parameter Parsing Demo, python -- demo
When writing a program without an operation interface, the most annoying issue is Parameter Parsing, especially for many parameters. Here is a small Demo to share with you:
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 = True32 error_messages = []33 host_ip = options.host_ip34 is_run = options.is_run35 show_type = options.show_type36 if not host_ip:37 error_messages.append("host_ip must be set;")38 is_valid_paras = False39 if show_type not in [0, 1]:40 error_messages.append("show_type only can be 0 or 1;")41 is_valid_paras = False42 43 if is_valid_paras:44 user_paras = {"host_ip": host_ip, "is_run": is_run, "show_type": show_type}45 return user_paras46 else:47 for error_message in error_messages:48 print(error_message)49 return None50 except Exception as ex:51 print("exception :{0}".format(str(ex)))52 return None53 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()
When OptionParser is used, the -- help and-h parameters are automatically added, and parameter help is automatically generated, for example:
For code:
opt.add_option('--run', action="store_true", dest="is_run", default=False, help="run the scripts")
-- Run indicates the parameter name.
Action indicates how to process the parameter values. store/store_true/store_false is commonly used, and store is the literal meaning. store_true means that True is passed to the parameter as the parameter value, store_false pass False as the parameter value to the parameter
Dest indicates the name of the parsed command line parameter,
In the code above, -- run is passed in as a command line parameter. Because action is store_true, the parameter value is True. The parsed parameter is is_run, and the value is (options, args) = opt. after parse_args () is assigned a value, options can be used. is_run.
More help: https://docs.python.org/2/library/optparse.html
##=================================================== ============================== ##
When there are many parameters or large parameter values, I prefer to use the parameter configuration file for simple and convenient editing. For example, to create a run_config.py file:
# -*- coding:utf8 -*-# run configclass RunConfig(object): is_run = True show_status = 1 host_ip = "192.167.1.1" run_scripts = """SELECT *FROM TB001WHERE ID >1000AND C1<300"""
Then access it in other files:
# -*- coding:utf8 -*-from run_config import RunConfigdef 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()
Simple and rude, not so troublesome. What does the leopard do!
##=================================================== ================== ##