Python 命令列引數解析Demo

2021-09-09 02:23:09 字數 4275 閱讀 6432

寫沒有操作介面的程式時,最討厭的就是引數解析問題,尤其是很多引數那種,下面是乙個小demo,拿出來與各位分享:

1

#-*- 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()

當使用optionparser時,會自動增加--help和-h引數,也會自動生成引數幫助,如:

對於**:

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來放問引數值。

對於引數較多或者引數值較大的情況,個人還是比較喜歡使用引數配置檔案來實現,簡單而且方便編輯,如建立乙個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 ...