更改Python脚本的输出形式

更改Python脚本的输出形式,python,raspberry-pi3,Python,Raspberry Pi3,首先,我必须说我是Python编程的初学者。我已经将传感器连接到RPI3UART端口。我在互联网上找到了这个传感器的工作程序。经过一点修改,它将我写入测量结果的文件中。代码如下: import serial import time import sys import json import datetime import binascii class pmsA003(): def __init__(self, dev): self.serial = se

首先,我必须说我是Python编程的初学者。我已经将传感器连接到RPI3UART端口。我在互联网上找到了这个传感器的工作程序。经过一点修改,它将我写入测量结果的文件中。代码如下:

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

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

您需要导入Python CSV库,然后创建一个
CSV.DictWriter
对象。(请参阅Python文档,了解如何做到这一点——这相当简单)

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


有一个例子正好说明了您需要做什么

到目前为止,您尝试了什么来将其转换为您想要的格式?