我有一个包含设备主机名的文本文件:

fc-acc-v-a-1
fc-cor-r-a-1
fc-agg-r1

我需要从文本文件中创建一个字典列表,如下所示:

[{'hostname': 'fc-acc-v-a-1', 'platform': ''},
 {'hostname': 'fc-cor-r-a-1', 'platform': ''},
 {'hostname': 'fc-agg-r1', 'platform': ''}]

到目前为止,这是我的代码:

with open("Devices.txt", "r") as devices:
    keys = ["hostname", "platform"]
    hosts = devices.read().splitlines()
    device_dict = [dict(zip(keys, values)) for values in hosts]

print(device_dict)

然而,这并不是我想要它做的.以下是输出示例:

[{'hostname': 'f', 'platform': 'c'},
 {'hostname': 'f', 'platform': 'c'},
 {'hostname': 'f', 'platform': 'c'}]

我需要它将文本文件中的每一行指定为键hostname的值,而platform的值现在可以为空.我计划使用PySNMP创建函数,从每个主机名中获取sysDescr OID,这将成 for each 设备的platform键值.

推荐答案

平台不是来自文件,您应该将其硬编码为空字符串.没有必要使用zip(),因为您没有键和值的列表.

device_list = [{'hostname': host, 'platform': ''} for host in hosts]

Python相关问答推荐

对Numpy函数进行载体化

发生异常:TclMessage命令名称无效.!listbox"

如何获取TFIDF Transformer中的值?

log 1 p numpy的意外行为

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

如何调整QscrollArea以正确显示内部正在变化的Qgridlayout?

将tdqm与cx.Oracle查询集成

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

matplotlib + python foor loop

当单元测试失败时,是否有一个惯例会抛出许多类似的错误消息?

使用polars. pivot()旋转一个框架(类似于R中的pivot_longer)

数据框,如果值在范围内,则获取范围和

仅使用预先计算的排序获取排序元素

如何在Airflow执行日期中保留日期并将时间转换为00:00

Polars时间戳同步延迟计算

为什么按下按钮后屏幕的 colored颜色 保持不变?

在不中断格式的情况下在文件的特定部分插入XML标签

为什么在不先将包作为模块导入的情况下相对导入不起作用

如何在基于时间的数据帧中添加计算值

Django REST框架+Django Channel->;[Errno 111]连接调用失败(';127.0.0.1';,6379)