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

adding header and append incoming string data into csv python

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

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

我是不是漏掉了什么?

我已经设法解决了。好像是命令:

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)

如果您发现有更简单的方法,请告诉我

一个简单的文件写入总是期望 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()

我还没有测试代码,但它应该可以工作。

在您的代码头中有一个列表和写入方法接受字符缓冲区对象(字符串)。尝试使用 write(','.join(header))