Python 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"

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", "--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
添加到url
add_参数
,但没有成功。使用指定的所有其他参数调用
/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:])