2014-03-06 2 views
0

Im 첫 번째 파이썬 "app"와 Stackoverflow의 참가자로부터 조언을 구하는 중입니다. Ive는 내가 가지고있는 것을 스크랩하고 처음부터 시작하기로 결정했습니다.docopt로 인자 값을 정의하기

사용법에 대한 논쟁을 멋지게 파싱하는 것처럼 보이지만 args에 값을 할당 할 방법이 확실하지 않은 것 같습니다.

ifs의 둥지를 만들어야합니까? 만약 그렇다면 어떻게해야합니까?

어쩌면?

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

당신은 파이썬 표준 라이브러리에서 argparse 살펴 보셔야합니다

#!/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

거의 다 알았습니다. arguments 변수에는 인수가 들어 있으며 dict에서와 같이 조회합니다. 이 파일 인수와 함께 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 fread에 전달하려면 어떻게해야합니까? 함수가 -f 값을 사용하는 방법은 무엇입니까? – iNoob

0

CODE.

+1

@tiggertoast 나는 그것을 보았고 docopt는 훨씬 더 좋고 더 단순 해 보인다. 원래'geptopt '를 사용하고있었습니다. 응답에 대해 – iNoob