簡體   English   中英

Python CSV逐行讀取並插入新數據

[英]Python CSV read row by row and insert new data

我有一個csv文件,我將從中逐行讀取,對於某些字段,需要處理數據並將結果插入同一行中的另一個字段,然后再轉到下一個字段。

我嘗試了各種方法,如:

w = open('test.csv', 'w+')
csv_r = csv_reader(w)
csv_w = csv.writer(w)

for row in csv_r:
    row[10] = results
    csv_w.writerows(row)

但我變得空白了。 這樣做還有其他辦法嗎?

基本上我需要讀取一行中的特定元素然后處理數據,結果將被附加到同一行中的另一個元素中。

w+清空/截斷您的文件,因此您無需迭代。 閱讀和寫作是r+

要更新文件要么存儲所有更新的行,重新打開文件並寫入,要么更好的方法是使用tempfile.NamedTemporaryFile寫入然后用shutil.move替換原始文件。

from tempfile import NamedTemporaryFile
from shutil import move
import csv


with open("test.csv") as f, NamedTemporaryFile("w",dir=".", delete=False) as temp:   
    # write all updated rows to out tempfile
    csv_w = csv.writer(out)
    csv_r = csv.reader(f)
    for row in csv_r:
       row[10] = results
       csv_w.writerows(row)
# replace original file with updated
move(temp.name,"test.csv")

好像你在同一個檔案上打開讀者和作者 -

csv_r = csv_reader(w)
csv_w = csv.writer(w)

這是預期的嗎? 你不應該在不同的文件上打開它們嗎?

如果您故意這樣做,請嘗試使用不同的文件,當您使用w+模式打開文件時,如果該文件存在則會被覆蓋。

w +打開文件進行寫入和讀取。 如果文件存在,則覆蓋現有文件。 如果該文件不存在,則創建一個用於讀寫的新文件。

嘗試使用r+模式打開文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM