2013-02-20 94 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