【发布时间】:2017-11-08 18:38:30
【问题描述】:
我觉得这是一个非常简单的问题,这里有很多非常相似的问题,但我仍然不知道如何得到我想要的。我正在使用在线时可以连接的远程设备。我想要一个记录设备最近正常运行时间的文件,如下所示:
# 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”、“检查输出”和“将结果写入文件”。但是每次我这样做时,这些值都会被那些在线但现在不在线的设备覆盖。如在,而不是上面,我得到类似的东西:
# device ID ......... last seen online
{'deviceID1':'Wed Nov 08 2017 06:11:27 PM',
'deviceID2':'Wed Nov 08 2017 06:11:27 PM',
'deviceID3':''}
当我在 2017 年 11 月 8 日星期三下午 6:11:27 检查时,设备 ID3 不在线。但我想在更新我在网上看到的设备的值时保留该值。我怎样才能基本上将这个字典/数据保存在一个文件中,并每次都为同一组唯一的设备 ID 更新它?这个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
【问题讨论】:
-
说实话我一个字都没读。把一些代码放在那里。如果是为了读书,我会读一本书。
-
不管设备是否在线,您总是会覆盖 所有 值。在转储 json 之前过滤掉设备列表以仅更新当前在线的设备。到目前为止发布您的代码,我们可以帮助调试它。
-
@mercer721
write_to_file_data和create_device_dictionary函数在您的问题中可能不是必需的,但您能否也给我们一个示例cmd_output_lines? -
@Bahrom,当然。 2 个设备的输出,一个返回,一个不返回,将是:
deviceIDa: True deviceIDb: Minion did not return. [No response] -
继续这个想法,接下来我会好奇的是在线设备有多个值 - 一个字典,例如,存储设备最近被看到的 5 次在线查看它是否在尝试“ping”或响应每个响应期间下降了一段时间。这将涉及不覆盖在线设备的值,而是附加到它们的当前值。所以它看起来像
{'device1':'second_most_recent_time',most_recent_time';'device2':'';'device3:'second_most_recent_time',most_recent_time'}等。想法?
标签: python json file dictionary