[英]How to get the key/value from python dict into requests for get method
我正在尝试从 dict 获取特定值并在请求模块中使用以发出获取请求。
clusters = {
'cluster_1':'https://cluster_1.something.com/api',
'cluster_2':'https://cluster_2.something.com/api'
}
代码:
def getCsv():
for i in clusters:
r = requests.get(i.values(), headers=headers, params=params)
with open("input.csv", "w") as f:
f.writelines(r.text.splitlines(True))
df = pd.read_csv("input.csv")
return df
getCsv()
我做对了吗?
最后一步是使用以下代码将集群密钥打印到 output csv 中。
with open(rb'output.csv', 'w', newline='') as out_file:
timestamp = datetime.now()
df = getCsv()
if 'Name' in df.columns:
df.rename(columns = {"Name": "team", "Total": "cost"}, inplace = True)
df.insert(0, 'date',timestamp)
df.insert(1, 'resource_type', "pod")
df.insert(2, 'resource_name', "kubernetes")
df.insert(3, 'cluster_name', i.keys)
df.drop(["CPU", "GPU", "RAM", "PV", "Network", "LoadBalancer", "External", "Shared", "Efficiency"], axis=1, inplace=True)
df['team'] = df['team'].map(squads).fillna(df['team'])
df.groupby(["date","resource_type","resource_name","cluster_name","team"]).agg({"cost": sum}).reset_index().to_csv(out_file, index=False)
但似乎不起作用,任何指导将不胜感激。
function getCsv
搞砸了。 您通过传递i.values()
将多个 url 传递给requests.get
并且您将在 for 循环的第一次迭代中返回。
尝试从 function 中提取循环并重新制定 function,如下所示:
def get_cluster_df(url, **kwargs):
r = requests.get(url, **kwargs)
with open("input.csv", "w") as f:
f.writelines(r.text.splitlines(True))
return pd.read_csv("input.csv")
headers = ...
params = ...
dfs = {}
for name, url in clusters.items():
dfs[name] = get_cluster_df(url, headers=headers, params=params)
你最终会得到一个字典dfs
,它看起来像:
{
'cluster_1': pd.DataFrame(),
'cluster_2': pd.DataFrame()
}
要从 Python 字典中获取键/值对并在使用请求模块的 GET 请求中使用它们,您可以使用requests.get()
function 的 params 参数。此参数采用键/值对字典并进行编码它们作为 URL 中的查询参数。
这是您如何执行此操作的示例:导入请求
设置键/值对的字典
params = {'key1': 'value1', 'key2': 'value2'}
使用params
参数发出 GET 请求
response = requests.get('http://httpbin.org/get', params=params)
打印响应文本
print(response.text)
这将向 URL http://httpbin.org/get?key1=value1&key2=value2发送 GET 请求,并将键/值对编码为查询参数。
您还可以使用requests.get()
function 的 json 参数发送一个 JSON object 作为请求体。 如果您想将复杂的数据结构作为请求的一部分发送,而不是将其编码为 URL 中的查询参数,这将很有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.