我觉得这是一个非常简单的问题,这里有很多类似的问题,但我还是不知道如何得到我想要的。我正在使用远程设备,当它们联机时可以连接到它们。我想要一个记录设备最近正常运行时间的文件,如下所示:# device ID ......... last seen online
{'deviceID1':'Wed Nov 08 2017 06:11:27 PM',
'deviceID2':'Wed Nov 08 2017 06:11:27 PM',
'deviceID3':'Tues Nov 07 2017 03:47:01 PM'}
我把它存储在一个json文件中json.dumps文件存储数据和json.load文件去看它。我的代码遵循以下步骤:“ping所有设备ID”、“检查输出”和“将结果写入文件”。但是每次我这样做,那些在线的和现在不在线的设备的值都会被覆盖。与上面不同,我得到的是:
^{pr2}$
当我在2017年11月8日星期三下午6:11:27检查时,设备3不在线。但我想在更新在线设备值的同时保留这个值。我如何将这个字典/数据保存在一个文件中,并且每次都为同一组唯一的设备ID更新它?这个appending-data-to-a-json-file-in-python">question最接近,但这是关于附加条目的,我想更新已经存在的键的值。谢谢。在
相关代码:def write_to_file(data):
with open(STATUS_FILE, 'w') as file:
file.write(json.dumps(data))
def create_device_dictionary(deviceIDs):
devices = {}
for i in range(0, len(deviceIDs)):
devices[deviceIDs[i]] = []
return devices
def check_ping_output(cmd_output_lines,devices):
for i, line in enumerate(cmd_output_lines):
device_id = line.strip().strip(':')
# if the device pinged back...
if 'did not return' not in cmd_output_lines[i+1]:
#current UNIX time
human_readable_time = time.strftime(
'%a %b %d %Y %I:%M:%S %p',
time.gmtime(time.time())
)
devices[device_id].append(human_readable_time)
else:
# do something here? I want the device ID to be in the file even if it's never appeared online
pass
return devices