新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
更多的處理:在Jython中解析命令行
在Jython中解析命令行

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、應(yīng)城網(wǎng)站維護(hù)、網(wǎng)站推廣。
經(jīng)常會(huì)需要對(duì)命令行參數(shù)進(jìn)行比 sys.argv 所提供的更多的處理。parseArgs 函數(shù)可以用于作為一組位置參數(shù)和一個(gè)開關(guān)字典得到任意的命令行參數(shù)。
因此,繼續(xù) JavaUtils.py模塊片段,我們看到:
- def parseArgs (args, validNames, nameMap=None):
- """ Do some simple command line parsing. """
- # validNames is a dictionary of valid switch names -
- # the value (if any) is a conversion function
- switches = {}
- positionals = []
- for arg in args:
- if arg[0] == '-': # a switch
- text = arg[1:]
- name = text; value = None
- posn = text.find(':') # any value comes after a :
- if posn >= 0:
- name = text[:posn]
- value = text[posn + 1:]
- if nameMap is not None: # a map of valid switch names
- name = nameMap.get(name, name)
- if validNames.has_key(name): # or - if name in validNames:
- mapper = validNames[name]
- if mapper is None: switches[name] = value
- else: switches[name] = mapper(value)
- else:
- print "Unknown switch ignored -", name
- else: # a positional argument
- positionals.append(arg)
- return positionals, switches
可以如下使用這個(gè)函數(shù)(在文件 parsearg.py 中):
- from sys import argv
- from JavaUtils import parseArgs
- switchDefs = {'s1':None, 's2':int, 's3':float, 's4':int}
- args, switches = parseArgs(argv[1:], switchDefs)
- print "args:", args
- print "switches:", switches
對(duì)于命令c:\>jython parsearg.py 1 2 3 -s1 -s2:1 ss -s4:2,它打?。?/p>
- args: ['1', '2', '3', 'ss']
- switches: {'s4': 2, 's2': 1, 's1': None}
這樣就實(shí)現(xiàn)了在Jython中解析命令行。
【編輯推薦】
- 如何將Jython類型轉(zhuǎn)換為Java類型
- Jython訪問Java屬性文件的方法一覽
- 用于Jython連接Java的JavaUtils模塊
- Jython線程示例:定義共享緩沖區(qū)
- 與Java語言相比Jython開發(fā)的獨(dú)特性能
文章名稱:更多的處理:在Jython中解析命令行
轉(zhuǎn)載來源:http://www.fisionsoft.com.cn/article/dhhsdid.html


咨詢
建站咨詢
