我已经花了几天的时间研究这个主题,几乎遍历该问题的所有答案,但经过反复试验,我仍然无法获得可以满足我需求的任何东西。 (我在下面发布了我实际的格式化代码代码,而不是描述部分)也许这只是我对python和列表/字典理解的理解的一个基本缺陷,但我希望有人能帮助我,或者为我指出正确的方向否决我或关闭票。首先让我解释一下我要做什么: 1.从Netsh的Windows上的IP接口获取输出并将其存储。 2.操作列表,以便我使用标题列表中的键创建字典。 3.它们在标题列表中的键将具有另一个字典的值 4.嵌套字典应具有netsh描述(DHCP启用:)的键,并且值在“:”上分开。
例如:{“接口“以太网2”的配置”: { 启用DHCP:是的, 接口指标:75 ... }, {接口“本地连接* 1”的配置”: { 启用DHCP:是的, InterfaceMetric:25,... }, }
相反,我得到:
{'DHCP enabled': [' No'], 'InterfaceMetric': [' 75'], 'IP Address': [' 127.0.0.1'], 'Subnet Prefix': [' 127.0.0.0/8 (mask 255.0.0.0)'], 'Default Gateway': [' 10.1.42.1'], 'Gateway Metric': [' 0']}
但是,当我尝试进行字典理解时,我得到的东西会使列表混乱,然后又不会遍历列表中的所有项目并从中进行适当的设置。该列表具有许多列表元素。我不确定我要去哪里哪里,如果我的问题措辞不当,请事先向我道歉。
from subprocess import check_output
import pprint
def get_all_network_info():
s = check_output(['netsh', 'interface', 'ip', 'show', 'address']).decode('utf-8')
s = s.splitlines()
return s
def run_parser():
results = []
split_results = []
headers = []
s = get_all_network_info()
for i in s:
results.append(i.strip())
for j in results:
if j.find("Configuration") != -1:
headers.append(j)
elif j != "":
split_results.append(j.split(":"))
# Creating Dictionaries
ipdict = {item[0]: item[1:] for item in split_results}
for k, v in ipdict.items():
for i in v:
print(k, i.strip())
print(ipdict)
def main():
run_parser()
if __name__ == '__main__':
main()
现在,我知道我实际上没有在标头列表上调用迭代。现在,我只是想让split_results列表成为合适的字典。