【问题标题】:adding header and append incoming string data into csv python添加标题并将传入的字符串数据附加到csv python
【发布时间】:2015-05-15 11:36:01
【问题描述】:

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

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

我错过了什么吗?

【问题讨论】:

    标签: python csv header append


    【解决方案1】:

    简单的文件写入总是需要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()
    

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

    【讨论】:

    • 谢谢。我做了第二个,我错过了这个: real_el_data.write('\n') 。非常感谢:)
    • 太棒了。但我建议您在使用 csv 时使用 csv 模块。一定要试一试。
    【解决方案2】:

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

    real_el_data.write(header)
    

    只有一个参数,而“标题”包含两个参数。 我修改了:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我做了这个,但似乎需要在它后面加一行:write(','.join(header)) then .write('\n')
      猜你喜欢
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 2019-03-01
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多