2012-05-17 11 views
32

単純なプログラムで読み込まれる数行のテキストを持つpythonを使ってtxtファイルを作成しました。しかし、私はファイルを再オープンして、プログラムの後半部分でファイルに行を追加するときに問題があります。 (ラインは、後に取得したユーザ入力から書き込まれます。)これは、「file.txtを」は前に開いて中に書き込まれていると仮定されているPythonを使って既存のファイルに行を追加する方法

with open('file.txt', 'w') as file: 
    file.write('input') 

。この開口部内に第二の時間しかし、コードとその私は現在、私は前に書かれたすべてを消去し、新しい行を書き直さなければなりません。これが起こらないようにする方法はありますか(そしておそらくファイルを開く余分なコードを減らしてしまうかもしれません)?

+5

ドゥ組み込みのファイルタイプをシャドーイングするので、 "ファイル"を変数名として使用しないでください。 – Fabian

答えて

37

ファイルに追加する場合は、'a'で開きます。ファイルを検索して、行を挿入する場所を探したい場合は、'r+'を使用します。 (docs

31

「書き込み」ではなく「追加」のためにファイルを開きます。

with open('file.txt', 'a') as file: 
    file.write('input') 
+11

注!これは改行を追加しません。テキストファイルに行を追加する必要がある場合は、データを '\ n 'で終わらせます(例:' file.write(' input \ n ') ' –

9

使用'a''a'appendを意味します。 'a'属性で開かれたファイルに書き込まれたものは、ファイルの末尾に書き込まれます。

with open('file.txt', 'a') as file: 
    file.write('input') 
6

上記の答えが正しいですが、ファイルの最後の行の最後にそれを留めるとは反対に、新しい行としてデータを追加するには、次のように使用します。

with open('file.txt', 'a') as file: 
    file.writelines('input') 
+0

これは実際には間違いです。 'file.write(arg)'はそのままファイルに 'arg'を書き込みます。 'file.writelines(arg)'は、 'arg'のすべての要素(例えば、文字列の文字またはリストの項目)を_without_ _any_ _separators_のファイルに書き込みます。この例では、どちらもまったく同じことを行います。 https://docs.python.org/3/library/io.htmlをご覧ください。ファイルを書くときはいつでも、行末を自分で追加する必要があります。 –

関連する問題