我是非常新的python,我需要閱讀下面的文件(實際上下面的輸出得到它從命令)並打印它的輸出。Python來處理文本文件來打印它的輸出
以下是文件:
NIC:
Name: eth0
ID: 0 1
Dynamic MAC Addr: 00:00:00:00:00:01
Preference: NONE
Ethernet Interface:
Name: prod
Default Network: Yes
VLAN ID: 2
Operational VLAN: SWA
Config Qual: N/A
Name: dev
Default Network: No
VLAN ID: 3
Operational VLAN: SWA
Config Qual: N/A
Name: eth1
Fabric ID: 1 0
Dynamic MAC Addr: 00:00:00:00:00:11
Preference: NONE
Ethernet Interface:
Name: prod
Default Network: Yes
VLAN ID: 2
Operational VLAN: SWB
Config Qual: N/A
Name: dev
Default Network: No
VLAN ID: 3
Operational VLAN: SWB
Config Qual: N/A
究竟我該怎麼做到的,是我需要找到我多少接口都有。在以上情況下,eth0和eth1。
我想驗證的eth0具有ID 0 1
爲eth0,我需要驗證名稱督促是否存在和VLAN ID 2是督促和默認網絡是有
爲eth0,我需要驗證Name dev是否存在,並且vlan ID 3用於dev,並且Default Network爲no。
對於所有接口類似。通常我會得到eth0 - 20的輸出。
我到目前爲止嘗試實現這一點,並能夠使其使用下面的方法,但下面的代碼是不正確的,因爲它不會工作,如果字段互換。
我實際上在做的是找到eth0並將下面的值重定向到var 1,var2,var3等,然後使用這些var1,var2,var3來獲取我的輸出。
但是,當字段交換和額外的字段添加到輸出文件時,這不會工作。
(下面的代碼注意是的例子,我努力)
我需要在這裏你可以幫助正確的方式來實現這一目標。
from itertools import islice
import string
import re
import os
import sys
a = "eth0"
def silentremove(filename): # remove file
try:
os.remove(filename)
except OSError as e: # this would be "except OSError, e:"
if e.errno != errno.ENOENT: # errno.ENOENT = no such file or directory
raise # re-raise exception if a different error occurred
file = "inputfile.txt"
silentremove(file)
with open("vnic1.txt") as f: # Remove empty lines
for line in f:
if not line.isspace():
input_file = open('inputfile.txt', 'a')
sys.stdout = input_file
sys.stdout.write(line)
input_file.close()
sys.stdout = sys.__stdout__
d = {}
count = 0
with open('inputfile.txt') as f:
for line in f:
if (re.search(a, line, re.IGNORECASE)):
var1, var2, var3, var4, var5,var6,var7,var8,var9,var10,var11,var12,var13, var14, var15, var16 = islice(f, 16)
key, value = var1.strip().split(":", 1)
d[key] = value
ideth0 = "0 1"
if (re.search(ideth0, value, re.IGNORECASE)):
count +=1
key, value = var5.strip().split(":", 1)
d[key] = value
name = "prod"
if (re.search(name, value, re.IGNORECASE)):
count +=1
if count == 2:
print "Working"
print "Status-{}:".format(a)
print " ID Name"
print " {} {}".format(ideth0, name)
else:
print "Failed"
這看起來像一個山藥l文件,爲什麼不使用yaml讀取器來讀取它?例如,['PyYAML'](http://pyyaml.org) – smac89