logo

Pythonはファイルに追加します

ファイルの読み取りまたは書き込み中に、開かれたファイルで実行できる操作の種類はアクセス モードによって決まります。ファイルを開いた後にどのように使用されるかを指します。これらのモードは、ファイル内のファイル ハンドルの位置も定義します。これらのアクセス モードの定義は次のとおりです。

    追加のみ (「a」): 書き込み用にファイルを開きます。追加と読み取り (「a+」): 読み取りと書き込みのためにファイルを開きます。

Python の追加モードでファイルを開くと、ハンドルはファイルの末尾に配置されます。書き込まれるデータは、既存のデータの最後に挿入されます。



例 1: 追加モードと書き込みモードを説明する Python プログラム。

Python3








C++で文字列を分割する
file1>=> open>(>'myfile.txt'>,>'w'>)> L>=> [>'This is Delhi '>,>'This is Paris '>,>'This is London'>]> file1.writelines(L)> file1.close()> # Append-adds at last> file1>=> open>(>'myfile.txt'>,>'a'>)># append mode> file1.write(>'Today '>)> file1.close()> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(>'Output of Readlines after appending'>)> print>(file1.read())> print>()> file1.close()> # Write-Overwrites> file1>=> open>(>'myfile.txt'>,>'w'>)># write mode> file1.write(>'Tomorrow '>)> file1.close()> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(>'Output of Readlines after writing'>)> print>(file1.read())> print>()> file1.close()>

>

>

出力:

Output of Readlines after appending This is Delhi This is Paris This is LondonToday Output of Readlines after writing Tomorrow>

例 2: 新しい行からデータを追加

上記の例では、 ファイル処理 , 改行からデータが追加されていないことがわかります。これは、改行文字「 」をファイルに書き込むことで実行できます。

Python3




# Python program to illustrate> # append from new line> file1>=> open>(>'myfile.txt'>,>'w'>)> L>=> [>'This is Delhi '>,>'This is Paris '>,>'This is London'>]> file1.writelines(L)> file1.close()> # Append-adds at last> # append mode> file1>=> open>(>'myfile.txt'>,>'a'>)> # writing newline character> file1.write(>' '>)> file1.write(>'Today'>)> # without newline character> file1.write(>'Tomorrow'>)> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(>'Output of Readlines after appending'>)> print>(file1.read())> print>()> file1.close()>

>

>

出力:

Output of Readlines after appending This is Delhi This is Paris This is London TodayTomorrow>

注記: 「 」は 2 バイトの特殊文字として扱われます。

例 3: Python での With ステートメントの使用

ステートメント付き 例外処理で使用され、コードがすっきりして読みやすくなります。ファイル ストリームなどの共通リソースの管理が簡素化されます。上記の実装とは異なり、with ステートメントを使用する場合は file.close() を呼び出す必要はありません。 with ステートメント自体により、リソースの適切な取得と解放が保証されます。

Python3




# Program to show various ways to> # append data to a file using> # with statement> L>=> [>'This is Delhi '>,>'This is Paris '>,>'This is London '>]> # Writing to file> with>open>(>'myfile.txt'>,>'w'>) as file1:> ># Writing data to a file> >file1.write(>'Hello '>)> >file1.writelines(L)> # Appending to file> with>open>(>'myfile.txt'>,>'a'>) as file1:> >file1.write(>'Today'>)> # Reading from file> with>open>(>'myfile.txt'>,>'r+'>) as file1:> ># Reading form a file> >print>(file1.read())>

>

>

出力:

Hello This is Delhi This is Paris This is London Today>

注記: with ステートメントについて詳しく知りたい場合 ここをクリック

shutil モジュールの使用:

このアプローチでは、shutil.copyfileobj() メソッドを使用して、別のファイル (source_file) の内容を「file.txt」に追加します。これは、最初に内容をメモリに読み取ることなく、あるファイルの内容を別のファイルに追加する場合に便利です。

アプローチ:
このコードでは、shutil.copyfileobj() 関数を使用して、source_file オブジェクトの内容を file.txt という新しいファイルにコピーします。 with ステートメントは、ファイル オブジェクト f を使用してファイルを開いたり、自動的に閉じたりするために使用されます。

時間計算量:
shutil.copyfileobj() 関数の時間計算量は、ファイルのすべてのバイトを読み書きする必要があるため、コピーされるファイルのサイズに比例します。したがって、コードの時間計算量は O(n) です。ここで、n はsource_file のサイズです。

空間の複雑さ:
ファイル オブジェクトsource_file および f に必要なメモリを超える追加メモリは割り当てられないため、コードのスペース複雑度は O(1) です。 shutil.copyfileobj() 関数はファイルの内容をチャンクにコピーするため、ファイル全体を一度にメモリにロードする必要はありません。

全体として、コードには線形の時間計算量と一定の空間計算量があり、時間計算量はコピーされるファイルのサイズに比例します。

Python3




import> shutil> with>open>(>'file.txt'>,>'a'>) as f:> >shutil.copyfileobj(source_file, f)>

>

>