0

我正在开发我的第一个 python“应用程序”,并在 Stackoverflow 上的参与者提出了一些建议。我决定放弃我所拥有的,从头开始。

它似乎很好地解析了参数以供使用等,但我不确定我是如何将值分配给 args 的?

我必须创建一个ifs巢吗?如果是这样,我该如何为 docopt 中的 args 执行此操作?

也许像这样?

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

代码

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

2 回答 2

1

你几乎明白了。您的 arguments 变量包含参数,您可以像在字典中一样查找它们。因此,如果您想使用 file 参数调用 fread 函数,您的 main 将如下所示:

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'}
于 2014-03-06T15:22:34.743 回答
0

您应该从 python 标准库中查看argparse 。

于 2014-03-06T15:13:48.957 回答