寫沒有操作介面的程式時,最討厭的就是引數解析問題,尤其是很多引數那種,下面是乙個小demo,拿出來與各位分享:
1當使用optionparser時,會自動增加--help和-h引數,也會自動生成引數幫助,如:#-*- coding:utf8 -*-
2importos3
import
datetime
4import
sys5
from optparse import
optionparser67
8def
get_user_paras():
9try
: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 ****** 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
36if
nothost_ip:
host_ip must be set;")
38 is_valid_paras =false
39if show_type not
in [0, 1]:
show_type only can be 0 or 1;")
41 is_valid_paras =false
4243
ifis_valid_paras:
44 user_paras =
45return
user_paras
46else:47
for error_message in
error_messages:
48print
(error_message)
opt.print_help()
49return
none
50except
exception as ex:
51print("
exception :
".format(str(ex)))
52return
none
5354
55def
main():
56 user_paras =get_user_paras()
57if user_paras is
none:
58sys.exit(0)
59 info = "
host_ip:, is_run:, show_type:
"60 info = info.format(user_paras["
host_ip"],
61 user_paras["
is_run"],
62 user_paras["
show_type"])
63print
(info)
6465
66if
__name__ == '
__main__':
67 main()
對於**:
opt.add_option('--run 表示引數名--run',
action="
store_true",
dest="
is_run",
default=false,
help="
run the scripts
")
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來放問引數值。
對於引數較多或者引數值較大的情況,個人還是比較喜歡使用引數配置檔案來實現,簡單而且方便編輯,如建立乙個run_config.py檔案:
#然後在其他檔案中訪問:-*- coding:utf8 -*-
#run config
class
runconfig(object):
is_run =true
show_status = 1host_ip = "
192.167.1.1
"run_scripts = """
select *
from tb001
where id >1000
and c1<300
"""
#簡單粗暴,沒那麼麻煩,土豹子的做法哈!-*- coding:utf8 -*-
from run_config import
runconfig
defmain():
print("
is_run:, host_ip:
".format(runconfig.is_run,runconfig.host_ip))
print("
run_scripts:
".format(runconfig.run_scripts))
if__name__ == '
__main__':
main()
python解析命令列引數
使用乙個先進的模組名為argparse,跟unix程式的命令列引數很像。直接對code做個筆記 import sys import argparse def main args print first name directory s args.first name print first para...
解析命令列引數
include include include include int make argv const char astr,const char delimiters,char argvp void free argv char argvp int main int argc,char argv i...
Python的命令列引數解析
命令列引數解析在程式語言中基本都會碰到,python中內建了乙個用於命令項選項與引數解析的模組argparse。下面主要介紹兩種解析python命令列引數的方式。解析python中命令列引數的最傳統的方法是通過sys.argv。demo如下 usr env python python coding ...