2014-03-06 49 views
0

我正在處理我的第一個python「app」,並在參與者的一些建議之後使用了Stackoverflow。我決定放棄我所擁有的,並從頭開始。使用docopt定義參數值

它似乎很好地解析使用等參數,但我不知道我是如何分配值的參數?

我是否必須創建一個ifs的巢?如果是這樣的話,我如何爲docopt中的參數做到這一點?

也許這樣?

if opt in ("-f", "--file"): 
    FWORD = arg 

CODE

#!/usr/bin/python 

""" 
Basic domain bruteforcer 

Usage: 
    your_script.py (-f <file>) (-d <domain>) [-t 10] [-v] 
    your_script.py -h | --help 

Options: 
    -h --help  Show this screen. 
    -f --file  File to read potential Sub-domains from. (Required argument) 
    -p --proxy Proxy address and port. [default: http://127.0.0.1:8080] (Optional) 
    -d --domain Domain to bruteforce.(Required argument) 
    -t --thread Thread count. (Optional) 
    -v --verbose Turn debug on. (Optional) 
""" 
from docopt import docopt 

def fread(FWORD, *args): 
    flist = open(FWORD).readlines() 
    return flist 


if __name__ == "__main__": 
     arguments = docopt(__doc__, version='0.1a') 
     print fread(fword) 

回答

1

你幾乎明白了。您的參數變量包含參數,您可以像在字典中一樣查看它們。所以,如果你想打電話與文件參數fread函數的主要是這樣的:

if __name__ == "__main__": 
    arguments = docopt(__doc__, version='0.1a') 
    fread(arguments['<file>']) 

如果你這樣調用腳本:

> python your_script.py -f myfiles/file.txt -d google.com 

那麼你的論點看起來就像這樣:

>>> print arguments 
{'--domain': True, 
'--file': True, 
'--help': False, 
'--thread': False, 
'--verbose': False, 
'10': False, 
'<domain>': 'google.com', 
'<file>': 'myfiles/file.txt'} 
+0

感謝您的回覆。該文件在命令行中作爲-f --file的參數提供。我試圖解決的問題是如何將值與-f或我的任何選項或參數配對? – iNoob

+0

什麼意思是「配對價值」是什麼價值?在命令行中給出的作爲-f參數的值在參數['']中,而-d參數在參數['']中。 – Reite

+0

對不起,因爲我的描述不是很有幫助。如果我想將-f的值傳遞給def defad,我該怎麼做?該函數如何知道使用-f值? – iNoob

0

你應該從Python標準庫看看argparse

+1

@tiggertoast我看過它,docopt看起來更好,更簡單。我最初使用'geptopt'。 – iNoob

相關問題