web-dev-qa-db-ja.com

Pythonのファイルにどのように追加しますか?

上書きするのではなく、ファイルにどのように追加しますか?ファイルに追加する特別な機能はありますか?

1348
user502039
with open("test.txt", "a") as myfile:
    myfile.write("appended text")
2063
Petter

モードとして「a」または「ab」を設定して、追加モードでファイルを開く必要があります。 open()を参照してください。

「a」モードで開くと、書き込み位置はalwaysがファイルの最後(追加)になります。 「a +」で開くと、読み取り、逆シーク、読み取りが可能になります(ただし、すべての書き込みはファイルの最後に残ります!)。

例:

>>> with open('test1','wb') as f:
        f.write('test')
>>> with open('test1','ab') as f:
        f.write('koko')
>>> with open('test1','rb') as f:
        f.read()
'testkoko'

:「a」を使用することは、「w」で開き、ファイルの最後までシークすることとは異なります。ファイルを開き、シークと書き込みの間に書き込みを開始しました。一部のオペレーティングシステムでは、「a」でファイルを開くと、後続のすべての書き込みがファイルの末尾にアトミックに追加されることが保証されます(他の書き込みによってファイルが大きくなる場合でも)。


「a」モードの動作方法に関する詳細(Linuxのみでテスト済み)。戻ってシークしても、すべての書き込みはファイルの最後に追加されます。

>>> f = open('test','a+') # Not using 'with' just to simplify the example REPL session
>>> f.write('hi')
>>> f.seek(0)
>>> f.read()
'hi'
>>> f.seek(0)
>>> f.write('bye') # Will still append despite the seek(0)!
>>> f.seek(0)
>>> f.read()
'hibye'

実際、fopenmanpage の状態:

追加モード(モードの最初の文字として)でファイルを開くと、このストリームへの以降の書き込み操作はすべて、呼び出しの前のようにファイルの終わりで発生します。

fseek(stream, 0, SEEK_END);

古い簡略化された回答(withを使用しない):

例:(in a real programuse with to close the file-see ドキュメント

>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'
180
sinelaw

私はいつもこれをします、

f = open('filename.txt', 'a')
f.write("stuff")
f.close()

それは簡単ですが、とても便利です。

36
Seth Connell

おそらくmode引数として"a"を渡したいでしょう。 open() のドキュメントを参照してください。

with open("foo", "a") as f:
    f.write("cool beans...")

モードを更新する(+)、切り捨てる(w)、バイナリ(b)のモード引数の組み合わせは他にもありますが、"a"だけで始めるのが最善の策です。

33
istruble

Pythonには、主な3つのモードから多くのバリエーションがあります。これら3つのモードは、次のとおりです。

'w'   write text
'r'   read text
'a'   append text

ファイルに追加するのはとても簡単です。

f = open('filename.txt', 'a') 
f.write('whatever you want to write here (in append mode) here.')

それからあなたのコードをより少ない行にするモードがあります:

'r+'  read + write text
'w+'  read + write text
'a+'  append + read text

最後に、バイナリフォーマットで読み書きするモードがあります。 

'rb'  read binary
'wb'  write binary
'ab'  append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary
21
Cleve Green

この行open(filename, "a")を使うとき、そのaはファイルを追加することを示します。つまり、既存のファイルに追加のデータを挿入することができます。

ファイルにテキストを追加するには、次の行を使用するだけです。

def FileSave(filename,content):
    with open(filename, "a") as myfile:
        myfile.write(content)

FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")
11
K.Suthagar

ファイルに追加したい場合 

with open("test.txt", "a") as myfile:
    myfile.write("append me")

test.txtという名前のファイルを開くために変数myfileを宣言しました。 Openは2つの引数、つまり開きたいファイルと、そのファイルに対して実行したい許可や操作の種類を表す文字列を取ります。

これがファイルモードのオプションです

モード説明
 
 'r'これはデフォルトのモードです。ファイルを読み込み用に開きます。
 'w'ファイルを書き込み用に開きます。 
 fileが存在しない場合は新しいファイルを作成します。
 fileが存在する場合はファイルを切り捨てます
 'x'新しいファイルを作成します。 fileが既に存在する場合、操作は失敗します。[a]追加モードでファイルを開きます。 
 fileが存在しない場合は、新しいファイルを作成します。
 't'これはデフォルトのモードです。テキストモードで開きます。
 'b'これはバイナリモードで開きます。
1
nima_moradi

'a'パラメータは追加モードを意味します。毎回with openを使いたくないのであれば、それを実行する関数を簡単に書くことができます。

def append(txt='\nFunction Successfully Executed', file):
    with open(file, 'a') as f:
        f.write(txt)

終わり以外の場所に書きたい場合は、'r+'を使用できます。

import os

with open(file, 'r+') as f:
    f.seek(0, os.SEEK_END)
    f.write("text to add")

最後に、'w+'パラメータはさらに自由度を与えます。具体的には、ファイルが存在しない場合はファイルを作成し、現在存在するファイルの内容を空にすることができます。


この機能の名誉は@Primusaにあります

1
Alec Alameddine

ファイルをr+モードで開き、ファイルの位置をファイルの末尾に設定することもできます。

import os

with open('text.txt', 'r+') as f:
    f.seek(0, os.SEEK_END)
    f.write("text to add")

ファイルをr+モードで開くと、末尾以外の他のファイル位置に書き込むことができますが、aa+は末尾に書き込むことを強制します。

0
Primusa