网络工程师学python什么内容

编程入门 行业动态 更新时间:2024-10-26 14:40:42

<a href=https://www.elefans.com/category/jswz/34/1766724.html style=网络工程师学python什么内容"/>

网络工程师学python什么内容

学网络的很多同学对编程不感兴趣。其实编程并非遥不可及。网络工程师都知道的路由器和交换机的配置命令,那就是简单的编程。

现代网络的设备规模爆发式增长,对一个项目所有设备进行命令配置,往往需要耗费大量的时间和人力成本。那么有没有简单易用的自动化方法,能够实现一键配置呢?

我的答案是:对网络工程师来说,Python就是简单易用,能帮助我们实现想要的自动化,从而极大的提升劳动生产率的编程工具。本文中列出一些常用的Python脚本,让我们一起初步了解和学习Python吧。

一、Python语法简单

先举两个例子,让大家见识它简洁的语法

1.计算1到100的整数和

s = 0 # 定义一个和参数

for n in range(0,101): # n是从1每次加1,直到遍历到100,

s += n # 相当于s+n的和再赋值给s

print(s) # 打印结果 5050

2.温度转换实例代码

TempStr = input('输入带有符号的温度值:') # 例如20C或20F

if TempStr[-1] in ['F', 'f']:

# eval()函数:评估函数,去掉参数最外侧引号并执行余下语句的函数

C = (eval(TempStr[0:-1]) -32)/1.8 # 温度转换公式

print('转换后的温度:{:.2f}'.format(C))

if TempStr[-1] in ['C', 'c']:

F = 1.8*eval(TempStr[0:-1]) + 32 # 温度转换公式

print('转换后的温度:{:.2f}'.format(F))

else:

print('输入有误')

二、文件读写操作实例

日志文件分析工具代码

# log.txt

# a b 30 c

# e f 40 g

try:

# 打开文件错误,执行except

f = open('log.txt', 'r') # 以只读方式打开文件

avg = 0 # 平均值

cnt = 0 # 行数

for line in f: # 识别每行

ls = line.split() # 分割日志每行的数值

cnt += 1 # 行数加1

avg += eval(ls[2]) # 先求温度值之和

print('平均温度是:{:.2f}'.format(avg/cnt))

f.close() #关闭文件

except:

print('文件打开错误')

2.文件词语频次统计

import jieba # 引入jieba库

f = open('神雕侠侣.txt' ,'r', encoding='utf-8') # 打开神雕侠侣文件

txt = f.read() # 一次性读出文件

f.close()

ls = jieba.lcut(txt) #分析文本保存到ls列表中

d = {} #定义一个字典变量

for w in ls:

d[w] = d.get(w,0) + 1 # 找到某词,其对应的次数加1

for k in d:

print('{}出现{}次}'.format(k, d[k]))

三、常用库应用实例

time库

time库是python中处理时间的标准库,其中一些基本概念有

计时起点:1970年1月1日0时0分0秒,time.gmtime(0)获得

UTC时间:世界标准时间,与GMT一致

DST时间:夏令时时间,源于系统底层C函数

struct_time:python中用于保存时间对象、带有属性标签的数据类型

import time

# 时间获取

time.time() # 返回一个从计时起点开始的表示时间的浮点数,简单来说是时间戳1557990476.2949965

time.gmtime(s) # 返回一个struct_time,如果提供参数s(浮点数时间戳),把参数s变成stuct_time

time.struct_time(tm_year=2020, tm_mon=5, tm_mday=16, tm_hour=7, tm_min=8, tm_sec=29, tm_wday=3, tm_yday=136, tm_isdst=0)

time.localtime(s) # 返回一个struct_time表示的本地时间,如果提供参数s(浮点数),则把参数s变成本地时间

time.struct_time(tm_year=2020, tm_mon=5, tm_mday=16, tm_hour=15, tm_min=10, tm_sec=11, tm_wday=3, tm_yday=136, tm_isdst=0)

time.mktime(time.gmtime()) # mktime把struct_time转换成浮点数1557961821.0

time.asctime(t) # 返回一个字符串表示的时间,如果提供参数t(struct_time),则把参数变成字符串时间

'Thu May 16 15:11:47 2019'

time.ctime(s) # 返回一个字符串表示的时间,如果提供参数s(浮点数类型),则把参数变成字符串时间

'Thu May 16 15:11:51 2019'

2.random库

random库主要用于产生随机数

# import random

# 基本随机函数

random.seed(a =None) # 初始化给定的随机种子,默认为当前系统时间

random.random() # 生成一个[0.0, 1.0]之间的随机小数

random.getstate() # 返回随机数生成器的内部状态,元组类型

random.setstate(state) # 设计随机数生成器内部状态,该状态从getstate()函数获得

3.re库

正则表达式本质是简洁表达一组字符串的表达式

# 上述正则表达式代表病毒片段

# 任何文件可以表示为十六进制字符的组合形式

# 匹配:病毒引擎的扫描过程

import re, random, time

segma = '0123456789ABCDE' # 十六进制字母表

def genStr(): # 随机产生字符串

s = ''

global segma # 全局声明

for i in range(32): # 逐一生成随机字符

s += segma[random.randint(0,15)]

return s

regex = repile(r'[1-2][^2-8][D-F]0+[A-F]') # 编译正则表达式

count = 0 # 猜测次数

start = time.perf_counter() #计时功能

match = regex.search(genStr()) # 正则表达式查找

while not match:

count += 1

match = regex.search(genStr()) # 不停匹配

print('共扫描了{}个文件,匹配到{}-{}'.format(count, match.string, match.group(0))

end = time.perf_counter()

print('发现数据,共用时{:.5f}秒'.format(end -start))

4.os库的使用

实现基本的操作系统交互功能

import os

os.system("c:\\windows\system32\calc.exe") # 运行计算器程序

0 # 命令启动的返回值为0

5.filecmp库的使用

提供比较目录和文件的功能

import filecmp

filecmp.cmpfiles('d:\\app', 'e:\\app', ['abc', 'def/abc'])

# 比较d:\\app\\abc和e:\\app\abc d:\\app\\def\\abc和e:\\app\def\\abc

6.sys库

维护一些与python解释器相关的参数变量

import sys

sys.argv

# 命令行参数的列表,其中argv[0]表示执行程序本身

7.getopt库

getopt库提供解释命令行参数sys.argv的功能

import getopt, sys

try:

# -h -v -i <文件.ico> --dispath <目录> --clean

opts, args = getopt.getopt(sys.argv[1:], 'hi:v', ["dispath=", "clean"]) # 解析参数

for o, a in opts: # 如果是对应的命令参数则打印

if o == '-h':

print('find -h')

elif o == '-v':

print('find -v')

elif o == '-i':

print('find -i {}'.format(a))

elif o == '--dispath':

print('find --dispath {}'.format(a))

elif o == '--clean':

print('find --clean')

else:

print('unknown value')

except getopt.GetoptError:

print('value to error')

四、常用组合类型应用实例

集合(无序、非一致、无索引):可变集合(set)、不可变集合(frozenset)

序列(有序、非一致/一致、序号索引):元组、列表、字符串、字节串

字典(无序、非一致、自定义索引):字典

1.集合类型

可变集合set():集合元素的个数可以增加或减少

不可变集合frozenset():集合创建后不可改变

# 创建可变集合

A = {'P', 'Y', 123}

B = set('pypy123') # 七个字符构成七个元素

A-B # {123}

B-A # {'3', '2', '1'}

# 创建和表示不可变集合类型

A = frozenset("pypy123")

frozenset({'2','3','p','y','1'})

# frozenset()函数创建,表示为frozenset({})形式

2.序列类型

# 元组类型

# 创建后一般不能被修改的数据类型

# 逗号或()或tuple()函数创建

a = tuple('pypy123')

# ('p','y','p','y','1','2','3')

b = 123,456

# (123, 456)

# 列表类型

# 创建后可以随时被修改的序列类型

# []或list()函数创建

a = list('py123')

# ['p','y','1','2','3']

b = [123,456]

# [123,456]

# 字典类型

# {}或dict{}函数创建

# 空{}创建字典类型,而不是集合类型

d = {'CHINA':'beijing', 'AMERICA':'Wastinton', 'FRANCE':'Paris'}

# {'CHINA':'beijing', 'AMERICA':'Wastinton', 'FRANCE':'Paris'}

d['CHINA']

# 'beijing'

e = {}

type(e)

# {dict}

3.二维数据的表示与处理

二维数据的存储方式:

元数据(自定义数据)

excel格式

数据库格式

csv格式(从应用广泛性角度,csv格式好)任何数据管理软件都能导出csv文件

# 从CSV格式文件中读数据

fo = open(fname)

ls = []

for line in fo:

# 把每行形成的列表当作一个元素

line = line.replace('\n', '')

ls.append(line.split(','))

fo.close()

# 将数据写入csv格式的文件

ls = [[1,2,3],[2,3,4],[3,4,5]] # 二维列表

f = open(fname, 'w')

for item in ls:

f.write(','.join(item) + '\n') # 将每个列表元素本身写入csv一行中

f.close()

# 二维数据的逐一处理

采用二层循环

ls = [[],[],[]] # 二维列表

for row in ls:

for column in row:

print(column) #处理代码

上述实例只使用了Python面向过程的知识。其它还有面向对象、计算生态构建、多语言生态构建以及更加专业化的精深知识。

但我认为,以上已足够应付一般的自动化脚本编程需要。学习也可以先完成再完美,通过工作中的实际应用提起学习兴趣后,再深入研究,也未尝不可。

更多推荐

网络工程师学python什么内容

本文发布于:2024-03-04 21:28:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1710464.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:网络工程师   内容   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!