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绘制数据的瀑布图的教程
Apr 07 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
python脚本替换指定行实现步骤
Jul 11 Python
python向已存在的excel中新增表,不覆盖原数据的实例
May 02 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
python覆盖写入,追加写入的实例
Jun 26 Python
Django外键(ForeignKey)操作以及related_name的作用详解
Jul 29 Python
Python 中list ,set,dict的大规模查找效率对比详解
Oct 11 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
Python json转字典字符方法实例解析
Apr 13 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
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
PHP 引用文件技巧
2010/03/02 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
8个实用的jQuery技巧
2014/03/04 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
python批量同步web服务器代码核心程序
2014/09/01 Python
详解Python字符串对象的实现
2015/12/24 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
python查询mysql,返回json的实例
2018/03/26 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
python logging日志模块原理及操作解析
2019/10/12 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
个人素质的自我评价分享
2013/12/16 职场文书
如何客观的进行自我评价
2013/12/17 职场文书
学生打架检讨书大全
2014/01/23 职场文书
高一学生期末评语
2014/04/25 职场文书
岗位职责说明书
2014/05/07 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
内科护士节演讲稿
2014/09/11 职场文书
向女朋友道歉的话
2015/01/20 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android