我有一个Web服务器,当你卷曲日志时,它会给出下面的示例数据
curl http://10.10.10.10.server1.com/logs
结果
[{"Database":"Database2","Version":"0.1.2","Day_time":329477060,"My_count":102075020,"ProjectID":55358627,"Final_time":46716393},
{"Database":"Database200","Version":"0.1.0","Day_time":5167727780,"My_count":4724597678,"ProjectID":1708358878,"Final_time":3016238800},
{"Database":"Database1","Version":"1.1.1","Day_time":1647140700,"My_count":7833711472,"ProjectID":5241471510,"Final_time":2592239962},
{"Database":"Database201","Version":"0.2.2","Day_time":2490677104,"My_count":7525799955,"ProjectID":1849565089,"Final_time":5676234866},
{"Database":"Cache1","Version":"1.2.2","Day_time":6877694221,"My_count":7403116508,"ProjectID":3260475032,"Final_time":4142641476},
{"Database":"Database201","Version":"1.2.1","Day_time":8285487311,"My_count":2970023201,"ProjectID":2956709247,"Final_time":13313954},
{"Database":"Database202","Version":"0.0.1","Day_time":5032945971,"My_count":2453463265,"ProjectID":932154161,"Final_time":1521309104},
{"Database":"Database202","Version":"1.2.1","Day_time":6440876717,"My_count":609847918,"ProjectID":364440252,"Final_time":245407666},
{"Database":"Cache1","Version":"0.0.3","Day_time":2265003223,"My_count":7311023147,"ProjectID":4612143282,"Final_time":2698879865},
{"Database":"Database202","Version":"0.0.1","Day_time":8743007122,"My_count":7687687281,"ProjectID":4160318641,"Final_time":3527368640},
{"Database":"Cache1","Version":"1.1.2","Day_time":9281660375,"My_count":4028121672,"ProjectID":3240617982,"Final_time":787503690}]
我想从这个日志中获取数据库、版本和最终时间
下面是我的代码
from urllib2 import Request, urlopen, URLError
import json
# Read file, Execute REST api request then parse output
file = open("list_0f_servers.txt")
for host in hosts:
link = 'http://%s.server1.com/logs' % (server)
requestLink = Request(link)
try:
requestResponse = urlopen(requestLnk)
resultJson = responseResponse.read()
resultArray = []
jsonData = json.loads(resultJson)
for dict in jsonData:
tempDict = {}
for key, val in dict.iteritems():
if key.find('Database') != -1 or key.find('Version') != -1 or key.find('Final_time') != -1:
tempDict[key] = val
resultArray.append(tempDict)
print tempDict
except URLError, e:
print 'Got an error code:', e
file.close()
我能设法得到低于预期的结果
{u'Database': u'Webapp1', u'Version': u'1.1.0', u'Final_time': 5729616276}
{u'Database': u'Cache0', u'Version': u'0.0.1', u'Final_time': 412280130}
{u'Database': u'Cache2', u'Version': u'0.1.1', u'Final_time': 967336228}
{u'Database': u'Cache0', u'Version': u'1.1.2', u'Final_time': 4443384438}
{u'Database': u'Database1', u'Version': u'0.2.2', u'Final_time': 782303822}
{u'Database': u'Cache0', u'Version': u'0.2.1', u'Final_time': 1490849761}
{u'Database': u'Webapp2', u'Version': u'1.1.2', u'Final_time': 4874374574}
但是我想把它格式化成更易于人阅读的格式,就像下面这样,然后把我的文件写出来。所以它应该显示输出并将其写入文件
Database Webapp1 Version 1.1.0 Final_time 5729616276
Database Cache0 Version 0.0.1 Final_time 412280130
Database Cache2 Version 0.1.1 Final_time 967336228
Database Cache0 Version 1.1.2 Final_time 4443384438
Database Database1 Version 0.2.2 Final_time 782303822
Database Cache0 Version 0.2.1 Final_time 1490849761
Database Webapp2 Version 1.1.2 Final_time 4874374574
非常感谢您的帮助。谢谢
您可以执行以下操作:
对于Python 2:
你喜欢这个工作吗
如果要按特定顺序从字典中提取字段,最好列出所需的键,而不是不需要的键(与前面两个答案提出的方法相反)。所以我建议:
结果:
注意:为了更好的可读性,我添加了斜杠
/
,但是如果您不想/不需要它们,可以在join
语句中删除它相关问题 更多 >
编程相关推荐