如何从python中的yml文件中获取所有Ip和Mac地址?
How to Get all Ip and Mac address from the yml file in python?
EthernetClient:
Windows:
ip: 192.168.1.152
mac_adr: ‘X4:81:C7:BD:46:04'
Windows_Extnd:
ip: 192.168.1.151
mac_adr: 'X4:81:C7:BD:47:04'
WifiClient:
Windows:
ip: 192.168.1.154
mac_adr: 'X4:81:C7:BD:47:05’
MAC:
ip: 192.168.1.3
mac_adr: 'X4:81:C7:BD:47:06’
IOS:
ip: 192.168.1.4
mac_adr: 'X4:81:C7:BD:47:07’
这是 Yml 文件。我需要从中获取所有密钥的 ip 和 mac_adr。
我伸手去拿所有数据
import yaml
a_yaml_file = open("../Test/example.yml")
parsed_yaml_file = yaml.load(a_yaml_file, Loader=yaml.FullLoader)
print(parsed_yaml_file["EthernetClient"])
print(parsed_yaml_file.get("WifiClient"))
你有一些问题.yml
文件
- 最后一行有空格
mac_adr: 'X4:81:C7:BD:47:07’
- 您以
'
开头,但以 ` 结尾
test.yml
EthernetClient:
Windows:
ip: 192.168.1.152
mac_adr: ‘X4:81:C7:BD:46:04'
Windows_Extnd:
ip: 192.168.1.151
mac_adr: 'X4:81:C7:BD:47:04'
WifiClient:
Windows:
ip: 192.168.1.154
mac_adr: 'X4:81:C7:BD:47:05'
MAC:
ip: 192.168.1.3
mac_adr: 'X4:81:C7:BD:47:06'
IOS:
ip: 192.168.1.4
mac_adr: 'X4:81:C7:BD:47:07'
ExecutionScript.py
import yaml
with open("test.yml", 'r') as f:
valuesYaml = yaml.load(f, Loader=yaml.FullLoader)
print(valuesYaml["EthernetClient"])
print(valuesYaml.get("WifiClient"))
最后是获取值的方法
根据要求,以下是获取完整 IP 列表的方法
import yaml
with open("test.yml", 'r') as f:
listOfIp = []
valuesYaml = yaml.load(f, Loader=yaml.FullLoader)
for clientType, clientValues in valuesYaml.items():
for attr, value in clientValues.items():
if 'ip' in value:
listOfIp.append(value['ip'])
print(listOfIp) # ['192.168.1.152', '192.168.1.151', '192.168.1.154', '192.168.1.3', '192.168.1.4']
EthernetClient:
Windows:
ip: 192.168.1.152
mac_adr: ‘X4:81:C7:BD:46:04'
Windows_Extnd:
ip: 192.168.1.151
mac_adr: 'X4:81:C7:BD:47:04'
WifiClient:
Windows:
ip: 192.168.1.154
mac_adr: 'X4:81:C7:BD:47:05’
MAC:
ip: 192.168.1.3
mac_adr: 'X4:81:C7:BD:47:06’
IOS:
ip: 192.168.1.4
mac_adr: 'X4:81:C7:BD:47:07’
这是 Yml 文件。我需要从中获取所有密钥的 ip 和 mac_adr。 我伸手去拿所有数据
import yaml
a_yaml_file = open("../Test/example.yml")
parsed_yaml_file = yaml.load(a_yaml_file, Loader=yaml.FullLoader)
print(parsed_yaml_file["EthernetClient"])
print(parsed_yaml_file.get("WifiClient"))
你有一些问题.yml
文件
- 最后一行有空格
mac_adr: 'X4:81:C7:BD:47:07’
- 您以
'
开头,但以 ` 结尾
test.yml
EthernetClient:
Windows:
ip: 192.168.1.152
mac_adr: ‘X4:81:C7:BD:46:04'
Windows_Extnd:
ip: 192.168.1.151
mac_adr: 'X4:81:C7:BD:47:04'
WifiClient:
Windows:
ip: 192.168.1.154
mac_adr: 'X4:81:C7:BD:47:05'
MAC:
ip: 192.168.1.3
mac_adr: 'X4:81:C7:BD:47:06'
IOS:
ip: 192.168.1.4
mac_adr: 'X4:81:C7:BD:47:07'
ExecutionScript.py
import yaml
with open("test.yml", 'r') as f:
valuesYaml = yaml.load(f, Loader=yaml.FullLoader)
print(valuesYaml["EthernetClient"])
print(valuesYaml.get("WifiClient"))
最后是获取值的方法
根据要求,以下是获取完整 IP 列表的方法
import yaml
with open("test.yml", 'r') as f:
listOfIp = []
valuesYaml = yaml.load(f, Loader=yaml.FullLoader)
for clientType, clientValues in valuesYaml.items():
for attr, value in clientValues.items():
if 'ip' in value:
listOfIp.append(value['ip'])
print(listOfIp) # ['192.168.1.152', '192.168.1.151', '192.168.1.154', '192.168.1.3', '192.168.1.4']