Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不打印的Python用法_Python - Fatal编程技术网

不打印的Python用法

不打印的Python用法,python,Python,我正在创建我的第一个python应用程序,我遇到了参数问题或缺少参数。如果我执行没有参数的脚本,我希望看到一条说明用法的消息,但是我得到了以下错误 错误 好的,谢谢大家的评论和指点。ZMO我要用docopt,它看起来像我一样干净简单。我不完全确定我需要对我的旧代码做什么,所以我上传了我认为我需要做的事情。有人能告诉我这是不是正确的方向吗? 现在如何处理def main?及 geptopt在现代python中已被弃用,您应该改用它。我个人更喜欢第三方 将sys.argv数组作为参数提供给main是

我正在创建我的第一个python应用程序,我遇到了参数问题或缺少参数。如果我执行没有参数的脚本,我希望看到一条说明用法的消息,但是我得到了以下错误

错误

好的,谢谢大家的评论和指点。ZMO我要用docopt,它看起来像我一样干净简单。我不完全确定我需要对我的旧代码做什么,所以我上传了我认为我需要做的事情。有人能告诉我这是不是正确的方向吗? 现在如何处理def main?及

geptopt在现代python中已被弃用,您应该改用它。我个人更喜欢第三方 将sys.argv数组作为参数提供给main是没有用的,因为您在模块上下文中全局导入sys模块,并且除了argv之外,您还可以从sys使用许多其他东西。只有在if\uuu name\uuuu==\uuuu\u main\uuuu中进行导入时,代码才有意义,但这不是好的python实践。更好的做法是实际解析参数,然后将返回的作为参数提供给main。 Argparse示例 docopt示例 geptopt在现代python中已被弃用,您应该改用它。我个人更喜欢第三方 将sys.argv数组作为参数提供给main是没有用的,因为您在模块上下文中全局导入sys模块,并且除了argv之外,您还可以从sys使用许多其他东西。只有在if\uuu name\uuuu==\uuuu\u main\uuuu中进行导入时,代码才有意义,但这不是好的python实践。更好的做法是实际解析参数,然后将返回的作为参数提供给main。 Argparse示例 docopt示例
不应将argv作为参数发送到main。这不是C/C++,应该考虑使用OPTPARSE;例如,optparse在处理所需参数方面非常稀少。@JayanthKoushik为什么不呢?如果你没有嫁给stdlib,我会用它来代替。对非常量使用ALL_CAPS名称也是很糟糕的风格;任何以后需要维护代码的人都会讨厌你。你不应该将argv作为参数发送给main。这不是C/C++,应该考虑使用OPTPARSE;例如,optparse在处理所需参数方面非常稀少。@JayanthKoushik为什么不呢?如果你没有嫁给stdlib,我会用它来代替。对非常量使用ALL_CAPS名称也是很糟糕的风格;任何以后需要维护代码的人都会讨厌你。谢谢,你能解释一下为什么你导入argparse并在if\uu name\uuuu=\uuuu main\uuu:下定义它,而不是在def main中吗?因为if\uu name\uuuu==\uu main\uuuu部分只在作为独立脚本运行时执行,而不是在作为库包含它时执行。因此,基本上,它避免了无用的导入,以防您将脚本作为库导入,因为您可能不希望通过该模块解析参数,但是,您可能希望通过脚本导入模块来为主函数提供剩余参数。谈到我所知道的最糟糕的反模式,可以看出我刚才所说的重要原因,就是参数解析如何成为技术债务,阻碍了任何希望将其作为库包含的项目。基本上,如果要控制命令行解析,则必须从sys.argv获取参数,并在导入该库之前将其清理干净。:/im fuzzle lol那么我是否应该像您那样进行所有导入,而不是在脚本顶部?sozs我是一个nooobt这方面没有规则,好的实践来自于阅读他人代码和实验的经验。但是我给你的建议是,除非你知道并理解你在做什么,否则总是全局导入。谢谢,你能解释一下为什么导入argparse并在if\uuu name\uuuu=\uu main\uuuu:下定义它,而不是在def main中吗?因为if\uu name\uuuu==\uu main\uuuu部分只有在独立运行脚本时才会执行,如果你把它作为一个图书馆的话就不会了。因此,基本上,它避免了无用的导入,以防您将脚本作为库导入,因为您可能不希望通过该模块解析参数,但是,您可能希望通过脚本导入模块来为主函数提供剩余参数。谈到我所知道的最糟糕的反模式,可以看出我刚才所说的重要原因,就是参数解析如何成为技术债务,阻碍了任何希望将其作为库包含的项目。基本上,如果要控制命令行解析,则必须从sys.argv获取参数,并在导入该库之前将其清理干净。:/im fuzzle lol那么我是否应该像您那样进行所有导入,而不是在脚本顶部?sozs我是一个nooobt这方面没有规则,好的实践来自于阅读他人代码和实验的经验。但我给你们的建议是,除非你们知道并理解自己在做什么,否则要始终在全球范围内进口。
unknown@ubuntu:~$ ./attack.py
Traceback (most recent call last):
File "./attack.py", line 60, in <module>
main(sys.argv[1:])
File "./attack.py", line 57, in main
print fread(FWORD)
File "./attack.py", line 19, in fread
flist = open(FWORD).readlines()
TypeError: coercing to Unicode: need string or buffer, NoneType found
#!/usr/bin/python


import sys, getopt, socket, fileinput, traceback
from Queue import Queue
from threading import Thread


def usage():
    print "-h --help: help\n"
    print "-f --file: File to read potential Sub-domains from.\n"
    print "-p --PROXY: PROXY address and port. e.g http://192.168.1.64:8080\n"
    print "-d --DOMAIN: DOMAIN to bruteforce.\n"
    print "-t --thread: Thread count.\n"
    print "-e: Turn debug on.\n"
    sys.exit()

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

#def addcheck(fcontent):



def main(argv):
    PROXY = None
    DOMAIN = None
    FWORD= None
    try:
            opts, argv =getopt.getopt(argv, "h:f:p:d:t:e",["help", "file=", "PROXY=", "DOMAIN=", "thread="])

    except getopt.GetoptError as err:
            print str(err)
            usage()
            sys.exit(2)

    for opt, arg in opts:
            if opt in ("-h", "--help"):
                    usage()
                    sys.exit()
            elif opt in ("-f", "--file"):
                    FWORD = arg
            elif opt in ("-p", "--PROXY"):
                    PROXY = arg
            elif opt in ("-d", "--DOMAIN"):
                    DOMAIN = arg
            elif opt in ("-t", "--thread"):
                    thread = arg
            elif opt in '-e':
                    global _debug
                    _debug = 1
            else:
                    usage()
                    sys.exit()

    print fread(FWORD)

if __name__ == "__main__":
    main(sys.argv[1:])
#!/usr/bin/python

import sys, getopt, socket, fileinput, traceback
from Queue import Queue
from threading import Thread

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

def main(argv):

"""
Usage:
  your_script.py [-f <file>] [-p <proxy>] [-d <domain>] [-t] [-v]
  your_script.py -h | --help

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

# […] your code (NOT SURE WHAT CODE YOU MEAN? 

if __name__ == "__main__":
    from docopt import docopt
    arguments = docopt(__doc__, version='0.1a')
    print fread(FWORD)
# […] your code

if __name__ == "__main__":
    import argparse

    parser = argparse.ArgumentParser(description='Your script.')
    parser.add_argument('--file', '-f', metavar='FILE', dest='file', type=file,
                       help='File to read potential Sub-domains from.')
    parser.add_argument('--proxy', '-p', dest='proxy', action='store',
                       help='Proxy address and port.', default='http://127.0.0.1:8080')
    parser.add_argument('--domain', '-d', dest='domain', action='store',
                       help='Domain to bruteforce.')
    parser.add_argument('--thread', '-t', dest='thread', action='store_true',
                       help='Thread count.')
    parser.add_argument('--verbose', '-v', dest='verbose', action='store_true',
                       help='Turn debug on.')
    args = parser.parse_args()
    main(args)
Your script presentation.

"""
Usage:
  your_script.py [-f <file>] [-p <proxy>] [-d <domain>] [-t] [-v]
  your_script.py -h | --help

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

# […] your code

if __name__ == "__main__":
    from docopt import docopt
    arguments = docopt(__doc__, version='Naval Fate 2.0')
    main(arguments) # here using the parameter makes sense ;-)