2017-02-14 10 views
3

をVALUEN、キー= VALUE1でPythonでファイルを書き込む....このファイルがあると:は、私はそれがデータを以下ました /tmp/ps/snaps.txt既存のファイルを持っているフォーマット

key=default_value,value,value.....valuen 

これがあるために私のコード(これは毎回メインのPythonのコードが実行される実行されます):

with open("/tmp/ps/snaps.txt", "a+") as text_file: 
    text_file.write("value") 

しかしアウト私が手に入れている:

基本的に
key=default_value, 
value,value.....value 

私は は、このための任意の解決策は、私の値は次の行に書かれたくありませんか?

+1

ファイルの内容を適切なデータ構造でロードし、新しい値を挿入してそのデータを再度ファイルに書き込む必要がある場合は、ファイルの内容を変更しないでください。 – ZdaR

答えて

4

元のファイルの末尾にあるラインターミネータは、同じ行に追加できないようにしています。

あなたは3つのオプションがあります。

  1. は、その行ターミネータを削除:あなたのコードはそのままであるあなたは、バック改行過去の追求、そして書くかのように追記モードで

  2. 開いているファイルに動作しますが

コード:

そこから(上書きされます)次の時間または最後の文字(複数可用改行を入れて​​3210
  1. ファイルを完全に読み取り、最後の改行(str.rstrip()を使用)を取り除き、内容+追加の内容を書き込みます。あなたが既存のコンテンツのメモリ+読み込みオーバーヘッドを余裕がある場合は、最も安定したオプションです。

コード:それは非常に良好ではない、読み取り/書き込みのテキストファイルを編集しようとしますが、それを行うことができることを実証しているので、

with open(filename,"r") as text_file: 
    contents = text_file.read().rstrip() 
with open(filename,"w") as text_file: 
    text_file.write(contents) 
    text_file.write("{},".format(snapshot_name)) 

オプション2はハックです。

関連する問題