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转换HTML到Text纯文本的方法
Jan 15 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
详解Python循环作用域与闭包
Mar 21 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
python双向链表原理与实现方法详解
Dec 03 Python
python 类之间的参数传递方式
Dec 20 Python
python模拟预测一下新型冠状病毒肺炎的数据
Feb 01 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
python如何处理程序无法打开
Jun 16 Python
python numpy中setdiff1d的用法说明
Apr 22 Python
利用python调用摄像头的实例分析
Jun 07 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
杏林同学录(三)
2006/10/09 PHP
php str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
Python文档生成工具pydoc使用介绍
2015/06/02 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
椰子猫砂:CatSpot
2018/08/27 全球购物
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
优秀学生自我鉴定范例
2013/12/18 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
新学期开学寄语2016
2015/12/04 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书