第十三节:telnetlib、redis、threading模块
telnetlib模块案例:
知识点:
tn = telnetlib.Telnet()实例化
tn.open('地址','端口',command)打开链接
tn.read_until()判断链接状态
tn.write(b'')二进制的方式输入命令
tn.read_all()获取所有信息
tn.close()关闭链接
del tn 回收内存
import telnetlib,re
class TelnetInfo(): def telnetdo(self, host, port, command): tn = telnetlib.Telnet()
try:
tn.open(host, port, timeout=2)
except:
print("can not open host:%s port:%s" % (host, port))
exit(1)
tn.read_until(b"Username:")
tn.write(b'admin\n\r')
tn.read_until(b"Password:")
tn.write(b'admin\n\r')
tn.write(b'\n\r')
tn.write(b'\n\r')
tn.write(command.encode('ascii') + b'\n\r')
tn.write(b"bye\n\r")
ret = tn.read_all()
tn.close()
del tn
return ret tl=TelnetInfo()
data=tl.telnetdo('127.0.0.1','','fj')
print(data)
pymysql查询知识点:
import pymysql
db = pymysql.connect(host='127.0.0.1',user='kedacom',passwd='KedaMysql16#',db='ap',charset='utf8')
cur = db.cursor()
data1 = cur.execute('select * from user_info')
data2 = cur.fetchone() #获取一条数据,默认获取第一条数据,该条数据组成一个元组
da = data2[4] #通过切片获取该条数据中的一个数据
data3 = cur.fetchall() #获取全部数据,每一行的数据存在一个元组中
redis模块查询知识点:
常用命令:
import redis r = redis.Redis(host='10.67.16.31', port=6379,password='KedaRedis16',db=0,decode_responses=True)
#string常用查询
print(r.get('name')) #查询string类型的键值
print(r.getrange('name', 0, 3)) #通过索引获取值的部分数据
print(r.mget('k1')) #查询多个键对应的值 #hash常用查询
print(r.hexists("hash1", 'key')) #判断是key否存在,返回布尔值
print(r.hkeys("hash1")) #获取hash中所有的key
print(r.hvals("hash1")) #获取hash中所有的value
print(r.hget("hash1", "k1")) #获取单个键值
print(r.hmget("hash1", "k1", "k2")) #获取多个hash的key对应的值
print(r.hgetall("hash1")) #取出所有键值对
print(r.hlen('hash1')) #计算所有键的数量 #list常用查询
print(r.llen("list1")) # 计算列表长度
print(r.lrange('list1', 0, -1)) #切片打印列表元素
添加
r.lpush("list1", 77,) #从左边向列表中添加元素,没有就新建
r.rpush("list1", 88) #从右边向列表中添加元素,没有就新建
lpushx(name,value) #从右边向列表中添加元素,没有无法添加
r.linsert("list1", "before", "11", "00") # 往列表中左边第一个出现的元素"11"前插入元素"00"
r.lset("list1", 0, -11) # 把索引号是0的元素修改成-11 #set常用查询
print(r.scard("set1")) # 计算集合的长度
print(r.smembers("set1")) # 获取集合中所有的成员 #zset有序集合
print(r.zcard("zset1")) # 计算有序集合的长度
print(r.zrange("zset1", 0, -1)) # 获取有序集合中所有元素
string类型其他参数
redis 提供两个类 Redis 和 StrictRedis, StrictRedis 用于实现大部分官方的命令,Redis 是 StrictRedis 的子类,用于向后兼用旧版本。
redis 取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串。
redis-py 使用 connection pool 来管理对一个 redis server 的所有连接,避免每次建立、释放连接的开销。
默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数 Redis,这样就可以实现多个 Redis 实例共享一个连接池 import redis
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.StrictRedis(host='localhost', port=6379, db=0)实例化
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
string类型键值操作
set(name, value, ex=None, px=None, nx=False, xx=False)
在 Redis 中设置值,默认,不存在则创建,存在则修改。
参数:
ex - 过期时间(秒)
px - 过期时间(毫秒)
nx - 如果设置为True,则只有name不存在时,当前set操作才执行
xx - 如果设置为True,则只有name存在时,当前set操作才执行 setnx(name, value)设置值,只有name不存在时,执行设置操作
setex(name, time, value) time - 过期时间秒
psetex(name, time_ms, value)设置值 time_ms - 过期时间毫秒 r.set('foo', 'bar',ex=3,nx=True)设置字符串键值,存活时间3秒
r.get('foo')获取字符串键值或者r['foo'] r.mset(k1="v1", k2="v2")批量设置值
r.mget("k1", "k2")批量获取值 getset(name, value)设置新值并获取旧值 getrange(key, start, end) 获取子序列(根据字节获取,非字符,一个汉字三个字节,一个字母一个字节,0,2切片前三位,0,-1所有
setrange(name, offset, value) 对 name 对应值的二进制表示的位进行操作offset是二进制位的索引,value是值1或者0
getbit(name, offset)获取name对应的值的二进制表示中的某位的值 (0或1)
bitcount(key, start=None, end=None)获取name对应的值的二进制表示中 1 的个数key - Redis的name start - 字节起始位置 end - 字节结束位置
bitop(operation, dest, *keys)获取多个值,并将值做位运算,将最后的结果保存至新的name对应的值operation - AND(并) 、 OR(或) 、 NOT(非) 、 XOR(异或) dest - 新的Redis的name *keys - 要查找的Redis的name
strlen(name)返回name对应值的字节长度(一个汉字3个字节)
incr(self, name, amount=1)自增 name 对应的值,当 name 不存在时,则创建 name=amount,否则,则自增。name - Redis的name amount - 自增数(必须是整数)
incrbyfloat(self, name, amount=1.0)自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。name - Redis的name amount - 自增数(浮点型)
append(key, value)在redis name对应的值后面追加内容 key - redis的name value - 要追加的字符串
hash类型:
第十三节:telnetlib、redis、threading模块的更多相关文章
- centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课
centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB ...
- Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块
Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fab ...
- {Python之线程} 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Threading模块 九 锁 十 信号量 十一 事件Event 十二 条件Condition(了解) 十三 定时器
Python之线程 线程 本节目录 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Thr ...
- 第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—第三方模块django-simple-captcha验证码
第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—第三方模块django-simple-captcha验证码 下载地址:https://github.com/mbi/django- ...
- 第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装
第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装 当前环境python3.5 ,windows10系统 Linux系统安装 在线安装,会自动安装scrapy模块以及相关依赖模块 pip ...
- 第三百一十三节,Django框架,Session
第三百一十三节,Django框架,Session Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 1.数据库(默认)2.缓存3.文件4.缓存+数据库5.加密c ...
- Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Py ...
- 第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别
第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别 第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://gith ...
- centos LNMP第一部分环境搭建 LAMP LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/php/{p.conf.default,p.conf} php运行方式SAPI介绍 第二十三节课
centos LNMP第一部分环境搭建 LAMP安装先后顺序 LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/local/php/{ ...
- python成长之路【第十一篇】:网络编程之线程threading模块
一.threading模块介绍 threading 模块建立在 _thread 模块之上.thread 模块以低级.原始的方式来处理和控制线程,而 threading 模块通过对 thread 进行二 ...
随机推荐
- PU Learning简介:对无标签数据进行半监督分类
当只有几个正样本,你如何分类无标签数据 假设您有一个交易业务数据集.有些交易被标记为欺诈,其余交易被标记为真实交易,因此您需要设计一个模型来区分欺诈交易和真实交易. 假设您有足够的数据和良好的特征,这 ...
- 【i春秋综合渗透测试】《我很简单,请不要欺负我》
第2题:获取目标网站管理员的密码 扫到了后台(/admin),本来想用sqlmap跑一下,但是随便试了个弱口令(admin888)就进去了... 第3题: getshell 配置插马:登录后台 ...
- 【洛谷P1801】黑匣子——优先队列
题目链接 一道有点意思的题目 我们可以维护两个优先队列:pqmin和pqmax 其中 pqmin 是小根堆, pqmax 是大根堆 每次 add 一个数字,则将数字推入到 pqmin 中 每次 get ...
- [最短路,floyd] Codeforces 1204C Anna, Svyatoslav and Maps
题目:http://codeforces.com/contest/1204/problem/C C. Anna, Svyatoslav and Maps time limit per test 2 s ...
- 你所不知道的 C# 中的细节
前言 有一个东西叫做鸭子类型,所谓鸭子类型就是,只要一个东西表现得像鸭子那么就能推出这玩意就是鸭子. C# 里面其实也暗藏了很多类似鸭子类型的东西,但是很多开发者并不知道,因此也就没法好好利用这些东西 ...
- 使用TensorFlow v2.0构建卷积神经网络
使用TensorFlow v2.0构建卷积神经网络. 这个例子使用低级方法来更好地理解构建卷积神经网络和训练过程背后的所有机制. CNN 概述 MNIST 数据集概述 此示例使用手写数字的MNIST数 ...
- POJ - 1276 二进制优化多重背包为01背包
题意:直接说数据,735是目标值,然后3是后面有三种钱币,四张125的,六张五块的和三张350的. 思路:能够轻易的看出这是一个多重背包问题,735是背包的容量,那些钱币是物品,而且有一定的数量,是多 ...
- 将java中Map对象转为有相同属性的类对象(json作为中间转换)
java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...
- 使用nginx访问FastDFS
文中所有~~~均为同一个自定义文件夹名字,一般使用项目名称 2.1.为什么需要用Nginx访问? FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要 ...
- Cows POJ - 2481 (树状数组 + 单点更新 + 区间查询)
Cows 思路:我们可以按照每个范围的S从小到大排序,相同的S按E从大到小排序,这样的好处是当前范围的S一定大于等于之前范围的S(即当前的范围可能被之前范围的包围),那么我们只需要统计之前的范围E比当 ...