更改Python脚本的输出形式

时间:2017-12-16 18:40:09

标签: python raspberry-pi3

首先,我必须说我是Python编程的初学者。我已将传感器连接到RPi 3 UART端口。我在这个传感器的互联网工作程序中找到了。稍微修改了一下,就把它写给了测量文件的结果。代码如下:

import serial
import time
import sys
import json
import datetime
import binascii

class pmsA003():
        def __init__(self, dev):
            self.serial = serial.Serial(dev, baudrate=9600, 
timeout=3)
        def __exit__(self, exc_type, exc_value, traceback):
            self.serial.close()

     def setIdel(self):
            idelcmd = b'\x42\x4d\xe4\x00\x00\x01\x73'
            ary = bytearray(idelcmd)
            self.serial.write(ary)

    def setNormal(self):
        normalcmd = b'\x42\x4d\xe4\x00\x01\x01\x74'
        ary = bytearray(normalcmd)
        self.serial.write(ary)

    def vertify_data(self):
        if not self.data:
            return False
        return True


    def read_data(self):
        while True:
            b = self.serial.read(1)
            if b == b'\x42':
                data = self.serial.read(31)
                if data[0] == b'\x4d':
                    self.data = bytearray(b'\x42' + data)
                    if self.vertify_data():
                        return self._PMdata()

    def _PMdata(self):
        d = {} 
        d['apm10'] = self.data[4] * 256 + self.data[5]
        d['apm25'] = self.data[6] * 256 + self.data[7]
        d['apm100'] = self.data[8] * 256 + self.data[9]
        return d

if __name__ == '__main__':
        con = pmsA003('/dev/ttyAMA0')
        d = con.read_data()
        print(d)
        with open('/home/pi/ramdisk/PMA003', 'a') as f:
                f.write("%s" % (d))

结果,我得到了控制台和文件字符串,如下所示:

{'apm10': 150, 'apm100': 244, 'apm25': 228}

但我的目标是在文件格式中使用CSV文件:

,value_of_apm10, value_of_apm25, value_of_apm100

有人可以帮我修改上面的代码吗?

1 个答案:

答案 0 :(得分:0)

您需要导入Python CSV库,然后创建一个DictWriter对象。 (请参阅Python文档,了解如何执行此操作 - 它非常简单)。

创建writerow()时,您需要为其提供所需列标题的列表。然后,对于要写入CSV文件的每条记录,只需创建一个包含与列标题对应的键的字典,然后调用DictWriter的{{1}}方法。

有一个确切需要做的事情的例子here.