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

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

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等各类资料

有什么问题欢迎留言

712eb479e528

微信公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值