将数据写入csv文件到单行

时间:2016-11-13 15:50:40

标签: python csv

我需要将数据写入单行和列,数据来自串口。所以我以前一行一行地读写。 但要求是我需要将数据写入PYTHON的单行下一列。 我需要像这样的文件

1,2,33,43343,4555,344323

以这种方式,所有数据都是单行和多列,而不是一列和多行。

所以这会一行接一行地写入数据。

1

12

2222

3234

1233

131

但我想要 1,12,2222,3234,1233,131 比如每一行和多列。

import serial
import time
import csv
ser = serial.Serial('COM29', 57600)

timeout = time.time() + 60/6   # 5 minutes from now

while True:
    test = 0
    if test == 5 or time.time() > timeout:
        break
    ss=ser.readline()
    print ss
    s=ss.replace("\n","")
    with open('C:\Users\Ivory Power\Desktop\EEG_Data\Othr_eeg\egg31.csv', 'ab') as csvfile:
        spamwriter = csv.writer(csvfile,delimiter=',', lineterminator='\n')
        spamwriter.writerow([ s ])
        csvfile.close()
    time.sleep(0.02)

2 个答案:

答案 0 :(得分:0)

假设您的串口数据不会溢出主内存堆,以下代码将满足您的需求。

if

答案 1 :(得分:0)

csv模块写入行 - 每次调用writerow时,都会写入换行符并启动新行。因此,您无法多次调用它并希望获得列。但是,您可以将数据收集到列表中,然后在完成后写入该列表。 csv模块对此非常有用。

import serial
import time
import csv
ser = serial.Serial('COM29', 57600)

timeout = time.time() + 60/6   # 5 minutes from now

data = []
for _ in range(5):
    data.append(ser.readline().strip())
    time.sleep(0.02)

with open('C:\Users\Ivory Power\Desktop\EEG_Data\Othr_eeg\egg31.csv', 'ab') as csvfile:
    spamwriter = csv.writer(csvfile,delimiter=',', lineterminator='\n')
    spamwriter.writerow(data)

    # csv is overkill here unless the data itself contains commas
    # that need to be escaped. You could do this instead.
    # csvfile.write(','.join(data) + '\n')

<强>更新

在这里提出问题的一个技巧是提供一个简短,可运行的问题示例。这样,每个人都运行相同的东西,你可以谈论每个人可以使用的代码和输出方面的错误。

这是用模拟数据更新的程序。我把公开改为&#34; wb&#34;如果文件在程序运行时已经存在,则删除该文件。运行它,让我知道它的结果与你想要的结果有什么不同。

import csv
import time

filename = 'deleteme.csv'

test_row = '1,2,33,43343,4555,344323'
test_data = test_row.split(',')

data = []
for _ in range(6):
    data.append(test_data.pop(0).strip())
    time.sleep(0.02)

with open(filename, 'wb') as csvfile:
    spamwriter = csv.writer(csvfile,delimiter=',', lineterminator='\n')
    spamwriter.writerow(data)

print repr(open(filename).read())
assert open(filename).read().strip() == test_row, 'got one row'