作者:村里有个男孩叫小方

1 实验目的

掌握python 操作文件的内建函数(open read write close)

2 实验目标

完成对数据的分类(有一段json数据包的.txt数据,里面有电梯的实时运行数据,对这些电梯数据进行分类)

3 实验环境

win7操作系统

python2.7

4 实验步骤

4.1 了解内建函数

open() 打开文件

read() 输入

readline()输入一行

seek()文件内移动

write()输出

close()关闭文件

4.2 数据分析

通过我们的学习项目熟悉这些函数,具体如下:

1.分析如下数据

{

"croom_id": 3,

"device_id": "38002D000B51363530393030",

"date_dev": 1536748392,

"fault_type": 0,

"event_type": 0,

"action_status": 0,

"code": 0,

"lift_real_time": {

"floor_rfid": 20,

"floor": 120,

"distance": 21.959999,

"car_direction": 2,

"car_status": 1,

"service_mode": 1,

"online_status": 0,

"door_status": true,

"door_zone": true,

"passenger_status": true,

"speed": 1.573424,

"electric_current_a": 58.200001,

"electric_current_b": 66,

"electric_current_c": 64.019997,

"voltage_a": 224.600006,

"voltage_b": 224.600006,

"voltage_c": 224.699997,

"temperature_a": 37.200001,

"temperature_b": 37.799999,

"temperature_c": 37.400002,

"temperature_d": 37.799999,

"temperature_room": 37.799999,

"w": 300.600006

},

"mcuurlist": {

"flat_cnt": 0,

"car_safe": 0,

"car_ovh": 0,

"car_door": 0,

"car_motor": 0,

"car_flayer": 0,

"car_cpbutton": 0,

"car_haspeo": 1,

"room_safe": 0,

"room_em": 1,

"room_ovh": 0,

"room_hdoor": 0,

"room_cardoor": 0,

"room_firectr": 0,

"car_time": 1536748391,

"room_time": 1536748392,

"max_speed": 1.573424,

"self_en": 0,

"self_ex": 0,

"sensor_e": 0

},

"acclist": {

"accx": 8.036133,

"accy": 0.020508,

"accz": 1.014648,

"palx": -11.108398,

"paly": 17.639160,

"palz": 26.000977,

"roll": 0,

"pitch": 0,

"yall": 0,

"temp": 48.930000,

"press": 99908,

"car_speed": -1.087188,

"car_height": 23.790001

},

"sign": "15504059f949afe0c28c531bbfb5095e"

}

------------------cloud_message_recv_cb----------------

HTTP POST success code = 1 carid = 38002D000B51363530393030

--------- Http Response /lift/deviceData/addLiftRealTimeData.do ---------

73:{"code":1,"msg":"鎿嶄綔鎴愬姛","data":{"id":"38002D000B51363530393030"}}U

------------------cloud_message_recv_cb----------------

=========================== JSON [1446] ===========================

{

"croom_id": 4,

"device_id": "320027001847373032303434",

"date_dev": 1536748392,

"fault_type": 0,

"event_type": 0,

"action_status": 0,

"code": 0,

"lift_real_time": {

"floor_rfid": 13,

"floor": 120,

"distance": 45.591000,

"car_direction": 0,

"car_status": 1,

"service_mode": 1,

"online_status": 0,

"door_status": true,

"door_zone": true,

"passenger_status": true,

"speed": 0,

"electric_current_a": 58.200001,

"electric_current_b": 66,

"electric_current_c": 64.019997,

"voltage_a": 224.600006,

"voltage_b": 224.600006,

"voltage_c": 224.699997,

"temperature_a": 37.200001,

"temperature_b": 37.799999,

"temperature_c": 37.400002,

"temperature_d": 37.799999,

"temperature_room": 37.799999,

"w": 300.600006

},

"mcuurlist": {

"car_safe": 0,

"car_ovh": 0,

"car_door": 0,

"car_motor": 0,

"car_flayer": 1,

"car_cpbutton": 0,

"car_haspeo": 1,

"room_safe": 0,

"room_em": 1,

"room_ovh": 0,

"room_hdoor": 0,

"room_cardoor": 0,

"room_firectr": 0,

"car_time": 1536748391,

"room_time": 1536748392,

"max_speed": 0,

"self_en": 0,

"self_ex": 0,

"sensor_e": 0

},

"acclist": {

"accx": 1.059082,

"accy": -0.015137,

"accz": 1.124023,

"palx": 0.366211,

"paly": 0.549316,

"palz": 0.183105,

"roll": 0,

"pitch": 0,

"yall": 0,

"temp": 52.190000,

"press": 100211,

"car_speed": 0,

"car_height": 44.849998

},

"sign": "c127837e82cc019bcd897c993d7a57bf"

}

HTTP POST success code = 1 carid = 320027001847373032303434

--------- Http Response /lift/deviceData/addLiftRealTimeData.do ---------

73:{"code":1,"msg":"鎿嶄綔鎴愬姛","data":{"id":"320027001847373032303434"}}U

------------------cloud_message_recv_cb----------------

------------------cloud_message_recv_cb----------------

=========================== JSON [1487] ===========================

上面是一小段电梯运行时的实时数据,更多的数据存在elevatordata.txt里我们的目标是把不同的"croom_id"进行分类,数据里一共有5个croom_id,分别是12345,我们要把数据写入到新的1.txt,2.txt,3.txt,4.txt, 5.txt里面。从数据中可以看出每个数据包一共有76行(包括两个括号),所以,当我们读到括号时,就获取后面的76行,写入不通的文件当中

4.3具体实现代码

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import re

#以可读可写的方式打开5个文件

'''

模式 可做操作 若文件不存在 是否覆盖

r 只能读 报错 -

r+ 可读可写 报错 是

w 只能写 创建 是

w+  可读可写 创建 是

a   只能写 创建 否,追加写

a+ 可读可写 创建 否,追加写

'''

#读取

alldata = open("elevatordata.log",'rb')

#写入

data1 = open("1.log",'a')

data2 = open("2.log",'a')

data3 = open("3.log",'a')

data4 = open("4.log",'a')

data5 = open("5.log",'a')

def str_to_hex(s):

return ' '.join([hex(ord(c)).replace('0x', '') for c in s])

Separate = 0

strdata = ""

startflag = 0

str ="{"

for data in alldata.readlines():

if data[0] == "{":

startflag = 1

if startflag == 1:

if data[0] != "}":

if "\"croom_id\"" in data:

try :

#利用正则表达式获取(正则表达式以后会讲)

num = re.findall(r'(\w*[0-9]+)\w*',data) #数据有时会发生错误

Separate = int(num[0])

except IndexError:

pass

strdata = strdata + data

else :

strdata = strdata + data

startflag = 0

#print strdata #获取到所有的str了

if Separate == 1:

data1.write(strdata)

if Separate == 2:

data2.write(strdata)

if Separate == 3:

data3.write(strdata)

if Separate == 4:

data4.write(strdata)

if Separate == 5:

data5.write(strdata)

strdata = ""

alldata.close()

data1.close()

data2.close()

data3.close()

data4.close()

data4.close()

福利时间 :关注微信公众号:chengxuyuanxiaofang

获取免费的python嵌入式java等各类资料

有什么问题欢迎留言

微信公众号

c语言ord函数在哪个头文件里,第五章 文件的输入和输出相关推荐

  1. 第五章 文件和目录管理

    第五章 文件和目录管理 第一节 目录创建和管理 mkdir 参 数 :     -p 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录     -v或--verbose 显示执行时的详细信息 ...

  2. Objective-C学习笔记第十五章文件加载与保存

    第十五章文件加载与保存 Cocoa提供了Core Data,他能在后台处理所有文件内容 Cocoa提供了两个通用的文件处理类:属性列表和对象编码 一.属性列表类 在Cocoa中,有一类名为属性列表的对 ...

  3. c语言实现将两个文件复制到一个文件里_Python中复制文件的9种方法

    作者:小小程序员 链接:https://zhuanlan.zhihu.com/p/91277888 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Python 中有 ...

  4. Linux鸟哥的私房菜(第五章 文件权限以及目录配置)

    Linux鸟哥的私房菜 使用组和群组 User group others 文件属性 -rw-r–r-- 1 -(档案类型)rwx(档案拥有者权限{可读可写可执行)rwx(群组权限可读可写可执行)-其他 ...

  5. 《Python语言程序设计》王恺 机械工业出版社 第五章课后习题答案

    第五章 序列.集合和字典 5.8 课后习题 (1)Python 中,通过列表中的 index 方法可以根据指定值查找第一个匹配的列表元素 的位置. (2)Python 中,通过列表中的 insert ...

  6. C语言strstr()函数(在主字符串里查找子字符串,返回第一次找到的子字符串以及后面的字符串)

    需包含头文件:C 标准库 - <string.h> 文章目录 描述 声明 参数 返回值 实例 描述 C 库函数 char *strstr(const char *haystack, con ...

  7. C语言基础教程读书笔记5.2.(第五章函数和存储类2)

    4.作用域规则 标示符只能在说明或对他定义它的函数体或分程序内饰可见的,而在该函数体或分程序外则是不可见的. 举个例子: # include <stdio.h> int main() { ...

  8. C语言数据结构(大话数据结构——笔记3)第五章:串(字符串)

    文章目录 串的定义(153) 空串 null string(153) 子串与主串(153) 串的比较(154) 串的抽象数据类型(156) 查找子串第一个实现方法(157) 串的顺序存储结构(157) ...

  9. PTA 《C语言程序设计(第四版)》 第五章习题【记录】

    练习一 求和 int sum(int m, int n) {int s=0;for(int i = m;i<=n;i++){s = s+i;}return s; 练习二 输出较大的数 int m ...

最新文章

  1. 单链表的创建示意图, 显示单向链表的分析
  2. Kotlin入门简介
  3. jquery 简单日历
  4. 今天的我也不太清楚的即时通讯
  5. 在java中调用python方法
  6. linux安全策略加固文档_系统加固之Linux安全加固
  7. Shadow-插件化框架分析
  8. 如何刷机android手机,安卓手机如何刷机
  9. linux服务器离线安装python第三方库
  10. pid倒立摆matlab,基于MATLAB的直线一级倒立摆的PID控制研究
  11. 如何限制文件服务器上传文件的速度,怎么设置上传软件文件速度限制
  12. laravel使用scout和elasticsearch中文分词ik
  13. 为什么会有视频号?朋友圈还不够吗?
  14. java excel进度条_导出excel 用easyui显示进度条(也适用于其他框架遮罩层,进度条)...
  15. 【CSS】尺寸和边框、盒子模型、外边距_02
  16. dbo sysadmin和db_owner的区别
  17. NPN三极管放大原理
  18. 芯片封装技术——Wire Bond与Flip Chip
  19. Web地图服务发布及运维方案
  20. 嵌入式linux系统电源管理器,嵌入式Linux系统的动态电源管理技 - 嵌入式操作系统 - 电子发烧友网...

热门文章

  1. 无线局域网wlan是计算机网络与,什么是无线局域网(Wireless LAN, WLAN)
  2. Windows权限提升—溢出提权
  3. Adversarial Detection methods
  4. Laravel框架的搭建与部署教程
  5. Java伽马什么意思,游戏设置中的伽马值是什么意思 | 手游网游页游攻略大全
  6. Python3中的round函数(四舍六入五成偶)
  7. 模型预测控制的缺点_三电平整流器的延时补偿模型预测控制
  8. 诺亚方舟论坛的漫长开发历程(一)
  9. [DSP] Butterworth (巴特沃斯)数字滤波器设计参考
  10. 中标麒麟MIPS系统使用iperf