无法在csv文件的第一行中写入

时间:2019-11-04 00:09:41

标签: python-3.x list file csv file-writing

我正在尝试将值附加到csv文件并将其转换为列表。但是,我无法在csv文件的第一行上编写。而是从第二行开始编写代码。任何澄清将不胜感激。

谢谢

        time = get_time()
        time_list = []
        with open('time_data.csv', 'a', newline= '') as time_file:
            time_file_write = csv.writer(time_file, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL)
            time_file_write.writerow([time])
        with open('time_data.csv', 'r') as time_data:
                read = csv.reader(time_data)
                for i in read:
                    time_list.append(int(i[0]))

1 个答案:

答案 0 :(得分:0)

该错误不可重现。但是...

第一行之前的 CRLF 和最后一行之后的 no CRLF 是 Windows CSV 将具有的(旧版本)。新版本的 Windows 将完美地保留第一行并在最后一行之后添加一个额外的 CRLF。在 Linux 中,任何地方都不会出现不需要的 CRLF。即使您在 write 下重新定义等,基本行为仍然存在。

注意事项

  • csv writerow 为 Windows / Linux / 等采用不​​同的设置,如 lib/csv.py 下给出的。不同版本的 Windows 设置不同。但是对于所有风格/版本的 Linux 都是一样的。因此,尽管此处在 Windows 中未显示错误,但您可能...

  • 虽然问......如果你在这里提供一个简单的、中肯的和非常立即可执行的代码会更好。喜欢...


    import csv
    
    time = '12'
    with open('time_data.csv', 'a', newline= '') as time_file:
      time_file_write = csv.writer(time_file, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL)
      time_file_write.writerow([time])
    with open('time_data.csv', 'r') as time_data:
      read = csv.reader(time_data)
      for i in read:
        print(i)

此代码 - 在消除 (1) get_time() 和 (2) 定义/填充 time_list 之后 - 将使您了解问题所在。它按预期运行。

  • 考虑到这段代码(没有 get_time())在 Windows 中也不会生成空白的第一行,而且由于代码行 time = get_time() 增加了歧义,因为我们不知道它返回什么 {{1} }},您也需要检查以解决 - 如果旧的 Windows 版本不是这种情况。