7

我们可以使用 csv 库在 Python 中写入(这里应该是编辑事实)并同时读取相同的 csv 文件吗?

可以打开 csv 文件进行编辑和附加吗?

如果是这样,怎么做?

4

1 回答 1

1

简短的回答:没有


长答案:这取决于

使用 CSV 编写器完全可以附加数据。"a"只需以附加模式打开文件:

with file("data.csv", "a" as fh:
    w = csvwriter(fh):
    w.writerow(...)

编辑 CSV 文件并不是那么简单,因为您需要插入和删除文件的某些部分,除非您正在编辑的列是固定长度的。该csv模块没有为此的内置方法。

您可以打开原始文件,删除(或重命名原始文件)并打开一个具有相同名称的新文件:

with file("data.csv", "r") as rfh:
    os.remove("data.csv"):
    r = csvreader(rfh)
    with file("data.csv", "w") as wfh:
        w = csvwriter(wfh)
        # ... read from r and write to w

在 Linux 下,原始文件将一直可供读取,直到它关闭为止,因此您无需事先重命名它。我对 Windows 不太熟悉,因此您可能需要在创建新文件之前重命名原始文件,并在关闭旧文件后删除旧文件。


另一个重要的一点:如果您的写入仅限于附加数据,您可以毫无困难地读取和写入同一个文件。

with file("data.csv", "r") as rfh, file("data.csv", "a") as wfh:
    r = csvreader(rfh)
    w = csvwriter(wfh)
    # you can read using r and append using w

请注意 - 您的读者将能够阅读您刚刚使用 writer 编写的行。请注意不要陷入无限循环,导致文件非常大

于 2013-02-20T11:41:55.720 回答