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)
Run Code Online (Sandbox Code Playgroud)
在底部,我有这个:
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
Run Code Online (Sandbox Code Playgroud)
当我在命令行上调用我的脚本时staunch$ ./spiderer.py http://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/
Run Code Online (Sandbox Code Playgroud)
我尝试添加nargs=1到 url add_argument,但这没有用。./spiderer.py使用指定的所有其他参数调用也不会。发生了什么事?
如果你改变它会起作用
args = parser.parse_args(sys.argv)
Run Code Online (Sandbox Code Playgroud)
到
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
否则parse_args将读取sys.argv[0](您的程序的名称)作为位置参数,然后sys.argv[1]将是意外的第二个位置参数。
您也可以调用:
args = parser.parse_args(sys.argv[1:])
Run Code Online (Sandbox Code Playgroud)
若你宁可。
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |