我在尝试创建标题并在下一行添加传入数据时收到错误消息
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
我错过了什么吗?
答案 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))