Python3实现excel文件转yaml格式文件

最近在使用Nornir框架对网络设备进行备份时,遇到了一个相对比较棘手的问题,因为Nornir需要hosts.yaml,一个一个写的话几百台设备信息不知道要写到什么时候去,因此写了一个python脚本实现自动从excel文件读取设备IP地址,端口等信息,自动写入yaml文件。

excel文件

脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import xlrd, json, yaml

def main(file_name):
table_name = xlrd.open_workbook(file_name)
sheet_name = table_name.sheet_by_index(0)

for k in range(1,sheet_name.nrows):
data = sheet_name.row_values(k)

dict_json = {
data[0]: {"hostname": data[1], "port": int(data[2])}
}
excel_to_json = json.dumps(dict_json)
json_to_yaml = yaml.load(excel_to_json, Loader=yaml.FullLoader)
print(json_to_yaml)

with open('host.yaml',encoding='utf-8',mode='a',) as f:
yaml.safe_dump(json_to_yaml,f,allow_unicode=True)

if __name__ == '__main__':
main(file_name= input("文件路径:"))

  • 目前为初级版本,后期考虑模块化。

脚本执行结果

注意事项

  • 目前只测试了xlsx和xls格式表格
  • xlrd版本为1.2,最新版本不支持xlsx

脚本第二版