繁体   English   中英

使用python写入CSV文件

[英]Writing into CSV file using python

这里有一些我编写的简单代码。 数据不会累积在CSV文件中; 有人可以共享代码从串口读取数据并将其记录到CSV文件?

import serial
import csv
import string
import os
import time
import sys

def main():
    pass

if __name__ == '__main__':
    main()
    count=0
    f=open("test.txt","w+");
    result = csv.writer(f,delimiter=',', dialect='excel-tab')

    result_statememt=("date","zenith","elevation","azimuth","conv_elevation");
    result.writerow(result_statememt)
    f.close()
    while(count<10):
        #time.sleep(60)
        ser=serial.Serial()
        ser.port=3
        ser.baudrate=9600
        ser.open()
        str=ser.read(50)
        val=str.split(":")
        lines=str.split("\r\n")
        count=count+1
        print count
        f=open("test.txt","a+")
        result=csv.writer(f,delimiter=',')
        result.writerow()
        f.close()

    f.close()
    ser.close()

如上所述,由于您没有向result.writerow()传递任何内容, result.writerow()没有任何内容写入CSV文件。 但是我也担心你从串口一次读取50个字节,然后将它拆分为:字符,然后将它拆分为\\r\\n分隔符。 我不认为这会做你想要的。

我的猜测是你希望串口传递由\\r\\n终止的行,每行包含一组以:分隔的字段,并且你想将这些字段写入CSV文件。 我建议尝试这样的事情:

with open("test.txt", "wb") as output_file:
    csv_out = csv.writer(output_file, delimiter=',', dialect='excel-tab')
    csv_out.writerow("date","zenith","elevation","azimuth","conv_elevation")

    ser=serial.Serial(port=3, baudrate=9600, timeout=60)
    ser.open()
    for count in range(10):
        str = ser.readline().rstrip()
        csv_out.writerow(str.split(':'))
    ser.close()

我没有使用Python serial模块,并且目前没有硬件来测试它,但根据我对模块文档的阅读,这应该更接近你想要做的事情。 认为读取超时是以秒为单位测量的,因此如果串口在一分钟内没有产生任何数据,这将超时。

import serial
import csv
import string
import os
import time
import sys

def main():
    pass

if __name__ == '__main__':
    main()
    ser=serial.Serial()
    ser.port=2
    print ser.port
    ser.baudrate=9600
    with open("test.csv", "wb") as output_file:
        csv_out = csv.writer(output_file, delimiter=',', dialect='excel-tab')
        C_statememt=("date","time","Zenith","Azimuth","Elevation","conv_elevation");
    ser.open()
    for count in range(10):
        str = ser.readline().rstrip()
        C_statememt.writerow(str.split(':'))
    ser.close()

错误报告:

2
Traceback (most recent call last):
  File "C:\Documents and Settings\Administrator\My Documents\python code\code3\module1.py", line 28, in <module>
    C_statememt.writerow(str.split(':'))
AttributeError: 'tuple' object has no attribute 'writerow'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM