python - 使用 argparse 将登录信息传递给 Python 中的请求
问题描述
我正在尝试让 argparse 将登录详细信息从命令行传递给请求。但我收到一个错误:
Traceback (most recent call last):
File ".\aws_ec2_list_instances_no_output.py", line 811, in <module>
main()
File ".\aws_ec2_list_instances_no_output.py", line 733, in main
write_data_to_confluence(auth, html, pageid, title)
File ".\aws_ec2_list_instances_no_output.py", line 421, in write_data_to_confluence
info = get_page_info(auth, pageid)
File ".\aws_ec2_list_instances_no_output.py", line 416, in get_page_info
r = requests.get(url, auth = auth)
File "C:\Users\username\AppData\Roaming\Python\Python37\site-packages\requests\api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\username\AppData\Roaming\Python\Python37\site-packages\requests\api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\username\AppData\Roaming\Python\Python37\site-packages\requests\sessions.py", line 519, in request
prep = self.prepare_request(req)
File "C:\Users\username\AppData\Roaming\Python\Python37\site-packages\requests\sessions.py", line 462, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "C:\Users\username\AppData\Roaming\Python\Python37\site-packages\requests\models.py", line 317, in prepare
self.prepare_auth(auth, url)
File "C:\Users\username\AppData\Roaming\Python\Python37\site-packages\requests\models.py", line 548, in prepare_auth
r = auth(self)
TypeError: 'dict' object is not callable
在我的程序中,我要去:
parser = argparse.ArgumentParser(description='This is a program that lists the servers in EC2')
parser.add_argument(
"-u",
"--user",
default = getpass.getuser(),
help = "Specify the username to log into Confluence")
parser.add_argument(
"-d",
"--password",
help = "Specify the user's password")
options = parser.parse_args()
html = 'hi'
pageid = 123456789
title = 'hello'
if options.password and options.user:
user = options.user
password = options.password
auth = {user:password}
write_data_to_confluence(auth, html, pageid, title)
def write_data_to_confluence(auth, html, pageid, title):
url = '{base}/{pageid}'.format(base = BASE_URL, pageid = pageid)
r = requests.put(
url,
data = data,
auth = auth,
headers = { 'Content-Type' : 'application/json' }
)
我怎样才能auth
以正确的格式处理请求?
解决方案
Requests接受基本身份验证的元组。所以代替你的auth = {user:password}
它将与auth = (user, password)
推荐阅读
- flutter - Flutter 这个函数的返回类型是 'Future
',但不以 return 语句结尾 - java - 直接在 tomcat 文件夹中创建图像存储(Java)
- javascript - 并发选项在 p-settle 中似乎没有意义
- javascript - Angular 6:尝试在浏览器关闭事件(浏览器的卸载/卸载事件之前)上进行同步调用(删除)
- java - Azure Cosmos 文档数据库的 Java Api (SQL Api)
- javascript - 使用 JavaScript 将 max-height 设置为 calc 不起作用(无法分配给 CSS 属性)
- r - Plotly and Shiny:是否可以将事件数据作为列表对象获取?
- python - 按列表内的值增加第 i 列元素
- user-interface - 尝试为登录屏幕固定背景
- twa - TWA 性能缓慢