添加标头并将传入的字符串数据附加到csv python中

时间:2015-03-13 03:48:25

标签: python csv header append

我在尝试创建标题并在下一行添加传入数据时收到错误消息

def copy_real_data(real_curData, real_curTime):       
     real_el_data   = open(temp_path, "a")
     real_prev_data = open(temp_path, "r").read()

     header = ["Reading Right Shoulder Pitch Data", "ReadingTime"]

     if real_prev_data =='':
        real_el_data.write(header)
        real_el_data.write(','.join([real_curData, real_curTime]))
        real_el_data.write('\n')
        real_el_data.close()

从外面打电话:

  simulation.copy_real_data(str(0.76575), str(565657.989))

它以前工作..但是经过多次...它会生成一条错误消息:

 real_el_data.write(header)
 TypeError: expected a character buffer object
我错过了什么吗?

3 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。这似乎是命令:

real_el_data.write(header)

只接受一个参数,而'header'包含两个参数。 我修改了:

if real_prev_data =='':
    with open(temp_path, 'w') as f:
        f_csv = csv.writer(f)
        f_csv.writerow(header)

如果您发现有更简单的方法可以告诉我

答案 1 :(得分:0)

简单的文件写入总是需要character buffer

当没有命中if条件时,它适用于你。

您可以尝试以下操作(使用csv模块): -

import csv
def copy_real_data(real_curData, real_curTime):       
     real_el_data   = open(temp_path, "a")
     real_prev_data = open(temp_path, "r").read()

     header = ["Reading Right Shoulder Pitch Data", "ReadingTime"]
     csvwriter = csv.writer(real_el_data) 

     if real_prev_data =='':
        csvwriter.writerow(header)

     csvwriter.writerow([real_curData, real_curTime])
     real_el_data.close()

或者如果您不想使用csv: -

def copy_real_data(real_curData, real_curTime):       
     real_el_data   = open(temp_path, "a")
     real_prev_data = open(temp_path, "r").read()

     header = ["Reading Right Shoulder Pitch Data", "ReadingTime"]

     if real_prev_data =='':
        real_el_data.write(','.join(header))
        real_el_data.write('\n')
     real_el_data.write(','.join([real_curData, real_curTime]))
     real_el_data.write('\n')
     real_el_data.close()

我没有对代码进行过测试,但它应该有效。

答案 2 :(得分:0)

在你的代码头中是一个list和write方法接受字符缓冲区对象(string)。尝试使用write(',' .join(header))