Python入门(三)

我要使用Python来辅助解析路由器配置中的Vlan、Eth-Trunk和interface的信息,在这些信息当中,需要体现出Vlan和interface、Eth-Trunk和interface之间的关系。

网上已经有很多比较规整的Python入门的文章,比较规整的入门教程基本上都是从最基础的开始介绍Python语言。这里我就按照我的需要来介绍Python的入门,直接是通过问题出发来学习Python的使用。

第一个来解决的是如何获得设备的名称,在前面介绍过,设备的名称是disp cur命令后,然后去找“sysname XXX”这样的配置。因此,我们需要使用Python在配置文件中来查找“sysname XXX”这样的一段字符串,找到该字符串以后,“sysname”是配置的含义,而“XXX”才是我们想要的设备名称。

那么来整理一下步骤:

1、打开路由器的配置文件

2、将路由器的全部内容读入

3、逐行的查找“sysname XXX”字符串(XXX代表设备具体的名称,由于一台设备只有一个设备名,因此只要找到第一处符合的内容即可)

4、找到后取得设备的名称

按照上面的步骤一步一步来即可。

1、打开路由器的配置文件:

filename = ‘XXXX.log‘

f = file(filename, ‘r‘)

2、将路由器的内容全部读入

content = f.readlines()

3、逐行查找“sysname XXXX”

for c in content:
    txt = re.search(‘sysname‘, c)

4、找到后取得设备的名称并结束查找

    if txt != None:
        print c
        print c.split()[1]
        break

上面是用Python完成的每个步骤的代码,这里简单介绍一下。

file()是一个系统的函数,用来打开文件。打开文件时需要指定打开文件的路径和名称,然后要指定打开文件的方式,这里打开的文件是“XXXX.log”,打开的方式为“r”,也就是只读方式打开文件。打开文件后会返回一个文件对象,使用这个文件对象即可做有关文件相关的操作,比如读取、写入、关闭等操作。在上面的代码中,使用了f.readlines()将文件中的内容读取到content变量中。

当把文件全部读入到content变量中后,使用for循环来遍历content中的每行内容。然后使用re.search()搜索该行是否有“sysname”字符串。因为每台设备名称是不相同的,因此只能搜索该行是否有“sysname”,如果有的话就使用print来输出这行的内容。

在代码中for c in content是将content的每行内容依次给到c变量中,然后用re.search()依此在c变量中查找是否存在“sysname”。搜索到以后会先输出print c,然后再print c.split()[1]。

c.split()[1]是什么鬼?c是“sysname XXXX”,而这时我们需要的是“XXXX”,而不需要“sysname”,因此使用split()函数将这个字符串按空格拆分,分为“sysname”和“XXXX”两个字符串的列表。第一个字符是[0],第二个字符串是[1]。

举个例子看一下:

>>> c = ‘sysname XXXX‘
>>> print c.split()
[‘sysname‘, ‘XXXX‘]
>>> print c.split()[0]
sysname
>>> print c.split()[1]
XXXX
>>>

好了,基本上就介绍这么多,完整的代码如下:

import re

filename = ‘XXXX.log‘

f = file(filename, ‘r‘)
content = f.readlines()

for c in content:
    txt = re.search(‘sysname‘, c)
    if txt != None:
        print c
        print c.split()[1]
        break

f.close()

上面的代码中第一行import re是导入了一个库,这个库是一个正则表达式的库,正则表达式就是用来匹配文本的。

代码虽短,但是代码中包含了正则表达式、文件操作、循环遍历、字符串等内容。这些内容如果读者不熟悉可以更进一步的搜索相关资料参考。

我是为了使用Python语言,而没有深入的学习Python语言,毕竟我使用到的内容不深,如果对于真正需要深入掌握和理解Python语言的,还是先掌握Python语言的基础知识为好。

注:如果没有什么Python的基础,那么一定要掌握print语言,该语句是用来进行输出的语句,在上面不明白的语句后面,加一条print即可观察当前处理后的变量的值。比如需要查看content中的内容,那么可以直接写如下两句:

for c in content:
    print c

在学习的过程中注意这一点哦!当然,在随着深入的学习的过程中,最好是去掌握程序的调试,这样才会更好的了解程序的执行过程,和排除程序中的问题。

时间: 2024-10-08 09:04:43

Python入门(三)的相关文章

python入门三:文件操作

一.文件操作 1.文件对象:和c一样,要想对一个文件进行操作,需要获取该文件的对象 1 f = open("xxx") # 打开文件并获取文件对象 2 f.xxx # 对文件进行某些操作 3 f.close() # 关闭文件 2.访问模式: open函数除了接受一个文件名参数外,还可以设定文件的访问模式(open其他的参数不太能理解) 无   以只读方式打开,文件必须存在 r     以只读方式打开,文件必须存在 w    以只写方式打开, 先删除原有内容再写入新内容,文件不存在创建新

Python入门 (三)

迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 迭代器有两个基本的方法:iter() 和 next(). 字符串,列表或元组对象都可用于创建迭代器: 两个实例 list = [1,2,3,4] it = iter(list) for x in it: print (x, end=" ") import sys lis

python入门三十天----线程 调用两个CPU

线程threeding:   + join 练习: 1 #!/usr/bin/env python3 2 #-*- coding:utf-8 -*- 3 ''' 4 Administrator 5 2018/8/10 6 ''' 7 8 import threading 9 from time import time,sleep,asctime,ctime 10 11 def music(name): 12 for i in range(2): 13 print("......music %s

visual studio 2015 搭建python开发环境,python入门到精通[三]

在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo,这里略带一句,其实就"学习python"而言,比较建议使用pycharm,pycharm可以设置VS或者eclipse等多种IDE的编码,可以让绝大部分其他语言使用IDE的习惯者更容易上手.这一点兼容确实做的很好.不过既然这么多园友要求使用vs开发python的话,就介绍一下visual

Python入门基础学习 三

Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形,true就相当于1,false相当于0,可以用来计算 类型转换 转换:整数:int();字符串:str();浮点数:float() 转换例子:(图9) 如果用内置函数当变量名,比如str=123,一旦被赋值,再使用这个函数会被报错. type()函数可以明确告诉我们变量类型. isinstance

2018-06-20 中文代码示例视频演示Python入门教程第三章 简介Python

知乎原链 Python 3.6.5官方入门教程中示例代码汉化后演示 对应在线文档: 3. An Informal Introduction to Python 不知如何合集, 请指教. 中文代码示例Python入门教程 3.1.1_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 中文代码示例Python入门教程 3.1.2 第一部分_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 中文代码示例Python入门教程 3.1.2 第二部分_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

Python入门

Python入门教程(个人日常学习记录,有不妥之处欢迎指正!后续更新,敬请期待...) 学习地址:http://www.imooc.com/learn/177 Python中数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种: 一.整数 Python可以处理任意大小的整数,当然包括

python入门学习课程推荐

最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化的学习. 现推荐几个学习python基础知识的途径: 1.<笨办法学python>(第三版),从头到尾一个字一个字的照着程序敲: 2.慕课网<python入门>课程: 3.网易云课堂<疯狂的python>公开课. 4.<廖雪峰Python3>pdf文件. 这也是

《Python入门》第一个Python Web程序——简单的Web服务器

上一篇讲了<Python入门>Windows 7下Python Web开发环境搭建笔记,接下来讲一下Python语言Web服务的具体实现:第一个Python Web程序--简单的Web服务器. 与其它Web后端语言不同,Python语言需要自己编写Web服务器. 如果你使用一些现有的框架的话,可以省略这一步: 如果你使用Python CGI编程的话,也可以省略这一步: 用Python建立最简单的web服务器 利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录