2016-11-20 13 views
2

私はcsvファイルが読み込まれ、いくつかの情報が書き込まれるpythonコードを書いています。特定の行を見つけて、新しい行のデータを追加する必要があります。その後、この段階で。私は行を見つけることに成功しましたが、後に新しい行のデータを書き込むことはできません。ここに私の試みは次のとおりです。csv.readerは先読み可能性があるためfile.seek/file.tellを使用してpython3のcsvファイルの特定の行の後ろに新しい行を追加します

file = open('db.csv', 'r+') 
table = csv.reader(file) 
for row in table: 
    if(row == ['tbl']): 
     file.seek(len(row)) #this part is the problem I suppose 
     break 
table = csv.writer(file) 
table.writerow(['1', '2']) 
+0

すべての再生部品を新品に交換しますか?行+ '1,2 '? – falsetru

+0

@falsetruいいえ全くありません。私はその行を追加したいだけです。ファイル内で変更する必要はありません。 – Athena

答えて

1

は注意が必要です。現在の行に一致する正確なファイル位置を伝えることはできません。

また、挿入するのは簡単ではありません。リメインする部分を覚えておく必要があります。

私は道、次のことをするでしょう:

  • 書き込みに別のファイルを作成
  • 書き込みはあなたの必要性に応じて
  • が一度に行わ 、新しいファイルと古いファイルを置き換える

import csv 
import shutil 

with open('db.csv', 'r', newline='') as f, open('db.csv.temp', 'w', newline='') as fout: 
    reader = csv.reader(f) 
    writer = csv.writer(fout) 
    for row in reader: 
     writer.writerow(row) 
     if row == ['tbl']: 
      writer.writerow([]) # empty line 

shutil.move('db.csv.temp', 'db.csv') 
関連する問題