在Python中编写和读取相同的csv文件

mah*_*kya 7 python csv python-2.7

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

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

如果是这样,怎么样?

bik*_*der 3

简短回答:不


长答案:这取决于

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

with file("data.csv", "a" as fh:
    w = csvwriter(fh):
    w.writerow(...)
Run Code Online (Sandbox Code Playgroud)

编辑 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
Run Code Online (Sandbox Code Playgroud)

在 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 a
Run Code Online (Sandbox Code Playgroud)

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