【问题标题】:Unable to write in first line of csv file无法写入 csv 文件的第一行
【发布时间】:2020-02-29 07:37:51
【问题描述】:

我正在尝试将值附加到 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]))

【问题讨论】:

  • 你有没有尝试在写作时将模式从“a”更改为“w”?
  • 这不会覆盖值吗?我想在每次运行程序时都保持附加值。

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


【解决方案1】:

错误不可重现。但是……

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

注意几点

  • csv 写入器 采用 lib/csv.py 下给出的 Windows / Linux / 等不同设置。不同版本的 Windows 的设置不同。但对于 Linux 的所有风格/版本都是一样的。因此,虽然 在 Windows 中 此处未显示该错误,但您可能有...

  • 虽然问...如果您在这里提供一个简单、中肯且非常立即可执行的代码,那就更好了。喜欢...

导入 csv 时间 = '12' 使用 open('time_data.csv', 'a', newline= '') 作为 time_file: time_file_write = csv.writer(time_file, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL) time_file_write.writerow([时间]) 使用 open('time_data.csv', 'r') 作为 time_data: 读取 = csv.reader(time_data) 我在读: 打印(一)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2023-01-30
    • 2014-08-21
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多