2015-11-07 158 views
0

我想弄清楚如何从API调用中获取所有字典键,并将它们插入到平面文件中。python:将字典键打印到文件

#!/usr/bin/env python 

import requests 
import json 
import time 
import urllib3 
from base64 import b64encode 

requests.packages.urllib3.disable_warnings() 


# 
# GET /dashboards/{dashboardId}/widgets/{widgetId}/value 
test_dashboard = "557750bee4b0033aa111a762" 
test_widget = "8bad2fc0-5c9b-44f2-a54b-05c8c6f9552b" 
apiserver = "http://serveraddress" 
userpass = b64encode(b"myuser:mypass").decode("ascii") 
headers = { 'Authorization' : 'Basic %s' % userpass } 

def get_apicall(dashboardId, widgetId): 
    response = requests.get(
          apiserver + "/dashboards/" + 
          dashboardId + "/widgets/" + 
          widgetId + "/value", 
          headers=headers, 
          verify=False) 
    json_data = json.loads(response.text) 
    print(json.dumps(json_data["result"]["terms"], indent=2)) 

get_apicall(test_dashboard, test_widget) 

,其输出是这样的:

[[email protected] ]$ ./shunhosts.py 
{ 
    "71.6.216.39": 2, 
    "71.6.158.166": 2, 
    "71.6.216.55": 2, 
    "71.6.216.56": 2 
} 

我想代码写/追加每个字典键,新的生产线的纯文本文件:即

71.6.216.39 
71.6.158.166 
71.6.216.55 
71.6.216.56 
+0

有一个'keys()'方法 – tuxtimo

回答

3

如果你有一本字典作为

d = { 
    "71.6.216.39": 2, 
    "71.6.158.166": 2, 
    "71.6.216.55": 2, 
    "71.6.216.56": 2 
} 

你可以让你的钥匙keys()

d.keys() 
dict_keys(['71.6.216.56', '71.6.216.39', '71.6.158.166', '71.6.216.55']) 

使它成为一个新行sep arated:

s = '\n'.join(d.keys()) 
print(s) 
71.6.216.39 
71.6.158.166 
71.6.216.55 
71.6.216.56 

然后写入文件:

with open('some_file.txt', 'w') as fw: 
    fw.write(s) 

您现在可以进一步简化这:

with open('some_file.txt', 'w') as fw: 
    fw.write('\n'.join(d.keys())) 
0

字典是,根据定义,键任意数量的。没有“关键”。你,让你的所有键的Python列表键()方法,你必须theiteritems()方法,它返回键 - 值对,所以

for key, value in mydic.iteritems() : 
    thefile.write("%s\n" % key) 

或者干脆你可以做到这一点

for key in mydic.keys(): 
    thefile.write("%s\n" % key)