Python Argparse无法识别唯一的位置参数
Argparse无法识别我的位置参数。以下是设置:Python Argparse无法识别唯一的位置参数,python,argparse,Python,Argparse,Argparse无法识别我的位置参数。以下是设置: parser = argparse.ArgumentParser() parser.add_argument("url") parser.add_argument("-u", "--username") parser.add_argument("-p", "--password") parser.add_argument("-d", "--depth", default=sys.maxsize) parser.add_argument("-t"
parser = argparse.ArgumentParser()
parser.add_argument("url")
parser.add_argument("-u", "--username")
parser.add_argument("-p", "--password")
parser.add_argument("-d", "--depth", default=sys.maxsize)
parser.add_argument("-t", "--threads", default=4)
在底部,我有以下内容:
if __name__ == "__main__":
if len(sys.argv) > 1:
print sys.argv
args = parser.parse_args(sys.argv)
if args.username is not None and args.password is not None:
auth = [args.username, args.password]
else:
auth = None
spider(args.url,
basic_auth=auth,
threads=int(args.threads),
depth=int(args.depth))
else:
parser.print_help() # Handle 0 command-line arguments
当我在命令行上调用脚本时,比如staunch$./spiderer.pyhttp://www.example.com/
,我明白了:
usage: spiderer.py [-h] [-u USERNAME] [-p PASSWORD] [-d DEPTH] [-t THREADS]
url
spiderer.py: error: unrecognized arguments: http://www.example.com/
我尝试将nargs=1
添加到urladd_参数
,但没有成功。使用指定的所有其他参数调用/spiderer.py
。发生了什么事?如果你改变,它会起作用
args = parser.parse_args(sys.argv)
到
否则,parse_args
将读取sys.argv[0]
(程序名称)作为位置参数,然后sys.argv[1]
将成为意外的第二个位置参数
你也可以致电:
args = parser.parse_args(sys.argv[1:])
如果您愿意。就是这个!谢谢。虽然不是直接的,
parse_args
的参数的默认值实际上是sys.argv[1://code>。
args = parser.parse_args(sys.argv[1:])