2017-06-03 11 views
0

.csvファイルに新しい行を追加する必要があるときに、以下のスクリプトを試しました。 =「のtest.CSV」.csvファイルに行を追加する方法存在を置き換えずにBOFを置換する

with open(file,'r+',newline='') as csvfile: 
    row = ['hello,world\r\n'] 
    csvfile.writelines(row) 

ファイルは、その後、私は.csvファイルをチェックし、拳ラインが変更されたことが分かりました。

こんにちは、世界

、1,33,1,1,2,0,107,107,52,5,20,12,19,32,52,23,4,42,0,5、 3,3,4,3,0,1,0,1,1,2,0

339,558,69,428,1,15,1,0,0,0,01804,41,3,6 、4,10,18,41,10,1,20,0,2,0,4,3,1,0,0,1,1,1,0

3379,411,3,465、 1,0,0,0,3,0,0,1901,28,2,1,4,9,7,28,5,1,12,0,1,1,2,0,1,0、 0,0,1,2,1,0

n既存の要素を変更せずに.csvファイルの先頭に改行を追加しますか?シーク()?私を助けてください、本当に感謝します!

+2

ファイルに追加することはできません。これを行う方法は、新しいファイルを開き、新しいレコードを書き出し、残りのレコードを元のファイルから新しいファイルに読み書きすることです。それは途中でどの言語でも同じでしょう。 – cdarke

答えて

1

あなたは、最初のファイルを読み込む読み取りテキストに改行を付加し、ファイルにすべてを記述する必要があります。

これはファイル全体をメモリにロードし、ファイルが非常に大きい場合には問題となる可能性があります。解決策は、別のファイルに書き込み、1行ずつソースファイルを読み込むことです。

new_line = '1,2,3\n' 

with open('data1.csv', mode='w') as outfile: 
    # Write new line 
    outfile.write(new_line) 

    # Read lines of source file and write them to the new file 
    with open('data.csv', mode='r') as infile: 
     for line in infile: 
      outfile.write(line) 
+0

ありがとう、これは私にとって受け入れられるようですが、これを管理するよりエレガントな方法があるのは分かりますか? – Yochega

+0

私が知る限り、いいえ。 –

+0

とにかく、大丈夫です!あなたは助けてくれました – Yochega

0

csvはテキストファイルです。テキストファイルを更新するには、最初にテキストファイルを読み込み、ヘッダーを書き込んだ後、新しい行を書き込んだ後、古いファイル行の値を書き込むことをお勧めします。

How do I modify a text file in Python?

+0

ありがとう、私は、Pythonでファイルに挿入するような方法はありません参照してください。とにかく、それを感謝します。 – Yochega

+0

@yuyuqian:*どんな*言語でもそのような方法はありませんが、それはファイルシステムの仕組みの特徴です。 – cdarke

関連する問題