Python读取Pickle文件信息并计算与当前时间间隔的方法分析


Posted in Python onJanuary 30, 2019

本文实例讲述了Python读取Pickle文件信息并计算与当前时间间隔的方法。分享给大家供大家参考,具体如下:

python—?读取Pickle文件信息计算出与当前的时间间隔

生成h_dic.pkl文件信息

root@kali:~/python/snmp# cat snmpserver.py
#!/usr/bin/python
# --*-- coding:utf-8 --*--
import datetime#导入时间戳
import SocketServer
import pickle
pfile = 'h_dic.pkl'#定义pickle文件,并生成h_dic.pkl文件
#读取目录下的celie.txt文件
host_status = {}#新建字典,使用IP地址作为KEY值。作用是来判断每个客户端IP多久与服务器通信一次的
f = open('celie.txt')#调用策略文档,在里面的ip地址就可以通过,并发送信息
while True:
  line = f.readline().split()
  if len(line) == 0:break
  print line[0]#打印第一个IP地址信息
  host_status[line[0]] = []#给字典第一个设置为空,这样后面只要直接追加值就ok了
f.close()
class myMonitorHandler(SocketServer.BaseRequestHandler):
  '''This is the Monitor server'''
  def handle(self):
    recv_data = self.request.recv(1024)#接收客户端数据
    if self.client_address[0] == '192.168.72.130':#如果IP为本机IP地址,就重新写入pickle文件信息
      f2 = file(pfile,'w')#使用pickle模块可写模式打开文件f2
      pickle.dump(host_status,f2)#使用pickle带参数为字典名与文件名
      f2.close()#关闭文件f2
    if self.client_address[0] in host_status.keys():#如果存在字典中的ip地址信息,就返回对应客户端发送的Ip、时间戳、信息
      #self.client_address为数组('192.168.72.129', 49109)的值。只要当中的IP地址,因此取self.client_address[0]
      #把host_status字典中的self.client_address[0]值即IP地址值赋值有两个值,因此新建个列表,存取两个值时间戳与接收的信息
      #如:{'192.168.72.129': [(datetime.datetime(2017, 8, 20, 21, 29, 59, 415054), 'up')]}
      #host_status[self.client_address[0]] = [(datetime.datetime.now(),recv_data)]
      #直接把元组append进字典
      host_status[self.client_address[0]].append((datetime.datetime.now(),recv_data))
      print 'From %s : %s %s' %(self.client_address,datetime.datetime.now(),recv_data)#打印客户端地址、操作的时间戳值与接收的数据
      #print host_status
    else:#不存在字典中,则如下提示信息
      print "sorry, ip %s is not in the monitor list" % self.client_address[0]
    #打印出192.168.72.129 [(datetime.datetime(2017, 8, 20, 22, 1, 6, 705498), 'up')]
    for t,m in host_status.items():
      print t,m
if __name__ == "__main__":#当自己运行时调用什么什么;当被其他程序调用时调用什么什么,如果被其他程序调用了,下面代码不执行
  host,port = '',18000
  server = SocketServer.ThreadingTCPServer((host,port),myMonitorHandler)#调用TCP的多线程
  server.serve_forever()
root@kali:~/python/snmp#

pickle文件信息

root@kali:~/python/snmp# ls
celie.txt h_dic.pkl m_handle.py snmpclient2.py snmpserver.py tab.py tab.pyc
root@kali:~/python/snmp# cat h_dic.pkl
(dp0
S'192.168.72.129'
p1
(lp2
(cdatetime
datetime
p3
(S'\x07\xe1\x08\x16\x149\x1b\x02\xd0F'
p4
tp5
Rp6
S'up'
p7
tp8
a(g3
(S'\x07\xe1\x08\x16\x149#\x03\xeag'
p9
tp10
Rp11
S'up'
p12
tp13
a(g3
(S'\x07\xe1\x08\x16\x149*\x01Fd'
p14
tp15
Rp16
S'up'
p17
tp18
a(g3
(S"\x07\xe1\x08\x16\x14:'\x06\x9di"
p19
tp20
Rp21
S'up'
p22
tp23
a(g3
(S'\x07\xe1\x08\x16\x15\x0c\x16\x00=\x9f'
p24
tp25
Rp26
S'up'
p27
tp28
a(g3
(S'\x07\xe1\x08\x16\x15\x0c\x16\te\x8c'
p29
tp30
Rp31
S'up'
p32
tp33
as.root@kali:~/python/snmp#

调用h_dic.pkl文件m_handle.py的代码

运行情况1

root@kali:~/python/snmp# cat m_handle.py
#!/usr/bin/python
# --*-- coding:utf-8 --*--
from datetime import datetime#导入时间模块
import pickle#导入pickle模块
f = file('h_dic.pkl','rb')#使用rb读取模式打开pickle文件
host_status = pickle.load(f)#使用pickle的load方式打开文件,变成字典
for h,m in host_status.items():#在字典中循环元素
  if len(m) != 0:#如果时间值不为空,则进入
    print h,m[-1]
root@kali:~/python/snmp# python m_handle.py
192.168.72.129 (datetime.datetime(2017, 8, 22, 21, 12, 22, 615820), 'up')
root@kali:~/python/snmp#

运行情况2

root@kali:~/python/snmp# cat m_handle.py
#!/usr/bin/python
# --*-- coding:utf-8 --*--
from datetime import datetime#导入时间模块
import pickle#导入pickle模块
f = file('h_dic.pkl','rb')#使用rb读取模式打开pickle文件
host_status = pickle.load(f)#使用pickle的load方式打开文件,变成字典
for h,m in host_status.items():#在字典中循环元素
  if len(m) != 0:#如果时间值不为空,则进入
    old_time = m[-1][0]#取时间值出来
    print h,(datetime.now() - old_time).seconds#打印主机ip,当前时间减去从pickle文件中读取的值
root@kali:~/python/snmp#

运行情况

root@kali:~/python/snmp# python m_handle.py
192.168.72.129 1007
root@kali:~/python/snmp#

运行情况2

root@kali:~/python/snmp# cat m_handle.py
#!/usr/bin/python
# --*-- coding:utf-8 --*--
from datetime import datetime#导入时间模块
import pickle#导入pickle模块
f = file('h_dic.pkl','rb')#使用rb读取模式打开pickle文件
host_status = pickle.load(f)#使用pickle的load方式打开文件,变成字典
for h,m in host_status.items():#在字典中循环元素
  if len(m) != 0:#如果时间值不为空,则进入
    old_time = m[-1][0]#取时间值出来
    time_diff = (datetime.now() - old_time).seconds#当前时间减去从pickle文件中读取的值,为时间差值
    if time_diff > 30:#如果时间差大于30秒,则进入
      print 'No data received from %s for %s ,please check!' %(h,time_diff)
    else:
      print h,(datetime.now() - old_time).seconds#打印主机ip,时间差值
root@kali:~/python/snmp#
root@kali:~/python/snmp# python m_handle.py
No data received from 192.168.72.129 for 494 ,please check!
root@kali:~/python/snmp#

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python实例分享:快速查找出被挂马的文件
Jun 08 Python
Python基于DES算法加密解密实例
Jun 03 Python
启动targetcli时遇到错误解决办法
Oct 26 Python
python简单图片操作:打开\显示\保存图像方法介绍
Nov 23 Python
Python中判断输入是否为数字的实现代码
May 26 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
Python数据分析pandas模块用法实例详解
Nov 20 Python
使用python切片实现二维数组复制示例
Nov 26 Python
python3.8下载及安装步骤详解
Jan 15 Python
Python中的xlrd模块使用整理
Jun 15 Python
python数字图像处理:图像简单滤波
Jun 28 Python
python实现烟花小程序
Jan 30 #Python
Python面向对象程序设计示例小结
Jan 30 #Python
python实现浪漫的烟花秀
Jan 30 #Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 #Python
python+selenium 定位到元素,无法点击的解决方法
Jan 30 #Python
解决Python selenium get页面很慢时的问题
Jan 30 #Python
对python实现模板生成脚本的方法详解
Jan 30 #Python
You might like
php下实现伪 url 的超简单方法[转]
2007/09/24 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
python统计文本文件内单词数量的方法
2015/05/30 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
实现Python与STM32通信方式
2019/12/18 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
Python之字典添加元素的几种方法
2020/09/30 Python
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
公司活动总结怎么写
2014/06/25 职场文书
工作说明书格式
2014/07/29 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
辞职信格式范文
2015/05/13 职场文书
公司业务员管理制度
2015/08/05 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android