我正在尝试在文件中搜索特定文本。然后打印该行之前的行,以及以特定字符开头的所有后续行,特别是“空格”。
这是我正在尝试读取的文件示例:
interface vlan 22
ip address 10.10.2.1 255.255.255.0
ip helper-address 10.10.44.1
ip helper-address 10.10.44.2
!
interface vlan 23
ip address 10.10.23.1 255.255.255.0
ip helper-address 10.10.44.1
ip helper-address 10.10.44.2
!
当我看到“IP 地址”时,我想立即打印该行,然后打印该界面下的所有配置项。
目前,我正在读取文件目录并从文件中输出特定信息。这是代码:
for file in glob.glob('*.log'):
with open(file) as search:
with open(queryoutput,"a") as foutput:
for line in search:
line = line.rstrip()
if hostcheck in line:
hostentry = line.split("hostname ")[1]
foutput.write("Subnet information below is from " + hostentry + "\n")
elif ipaddress in line:
foutput.write("Local Device: " + hostentry + "\n")
foutput.write("Remote " + line + "\n")
并非所有网络设备都会在 VLAN 行中声明“接口”,这就是为什么我不想搜索该文本的原因,并且不能保证感叹号会是最后一项,尽管很有可能。这就是为什么我正在寻找一种基于“IP 地址”和空格来读取行的方法。
我对 Python 和一般编程仍然很陌生,但看起来像这样的东西可能会有所帮助。我只是不完全理解它是如何工作的。
关于我如何做到这一点的任何想法?另外,我正在尝试使用 Python 3.x。