2016-08-09 31 views
0

のファイルを.csvに読み込むことが可能かどうかを知りたいと思っています。その特定の行を削除し、.csvファイルを更新して、次の行が昇順になるようにします。 .csvファイルにヘッダーがあると仮定します。どうすればいいの? Ex。以下の以下の私のsample.csvcsvから読み込んで、csvをpythonで更新する

Time A B 
12:25 5.6 4.5 
12:30 1.2 -3.4 
12:35 4.7 -4.0 

は、私が試してみましたコードです:

import csv 
with open('sample.csv', 'rb') as inp, open('sample.csv', "a") as out: 
    writer = csv.writer(out) 
    for row in csv.reader(inp): 
     writer.writerow(row) 

しかし、それはファイルの末尾に追加、取得します。私は中間段階の一時ファイルにも書き込もうとしました。しかし、私は同じファイルに取り組まなければならないので、私の目的を果たしていません。ここで私は、読み取りの1回の繰り返しの後にしたい出力sample.csvは、次のとおりです。

Time A B 
12:30 1.2 -3.4 
12:35 4.7 -4.0 
+1

はい、可能ですが、あなたの努力を示すことができます – EdChum

+0

@EdChum私は 'python'で初めてです。私は[基本的なリンク](http://stackoverflow.com/questions/16020858/inline-csv-file-editing-with-python)を見てきました。そのコードを私の目的に役立たせることはできません。 – abhi1610

+0

@EdChumが言ったように、何かを試してみて、ここに投稿してください、私たちはあなたを案内します。 –

答えて

0

あなたは、メモリの内容を維持するためにStringIOを使用して、最後に目的のファイルに書き込むことができます。

from io import StringIO 
import csv 

filename = 'sample.csv' 
out_data = StringIO() 

# Read CSV data to memory 
with open(filename, 'r', newline='') as in_file: 
    writer = csv.writer(out_data) 
    for row in csv.reader(in_file): 
     writer.writerow(row) 

# Write intermediate data to file 
with open(filename, 'w', newline='') as out_file: 
    out_file.write(out_data.getvalue()) 

out_data.close() 
関連する問題