2013-02-20 89 views
3

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

可以打开一个csv文件进行编辑&追加?

如果是这样,怎么样?

+0

hey Jacob 你为什么删除熊猫标签。 这是一个数据分析库,所以我认为它应该包含丰富的csv文件处理机制。 如果你不打算回答我的问题,请让可以做的人。我也需要大熊猫专家的帮助 – maheshakya 2013-02-20 11:42:32

+0

这个问题可能更具体一点,并提供洞察力,你正在尝试做什么。你试过什么了?您需要以何种方式修改文件? – bikeshedder 2013-02-20 11:55:06

+0

这是一个包含超过50列和超过400000行的大型csv文件。我不想用全新的数值来替换少数列。 – maheshakya 2013-02-20 11:59:21

回答

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 

只要小心 - 您的读者将能够阅读您刚刚使用作家写的行。请注意,您不会在无限循环中导致非常大的文件

+0

'#你可以使用r读取并使用** a **'追加。 因为6个字符的限制,所以SO不会让我编辑答案。 – 2017-07-01 18:49:14