の と Python のキーワードはコンテキスト マネージャーとして使用されます。他のプログラミング言語と同様に、ファイル操作やデータベース接続などのリソースの使用は非常に一般的です。しかし、これらの資源の供給には限りがあります。したがって、主な問題は、使用後にこれらのリソースを確実に解放することにあります。これらが解放されない場合、リソースのリークが発生し、システムの速度が低下したり、クラッシュしたりする可能性があります。
ご存知のとおり、 open() 関数は通常、 Python でのファイル処理に使用されます。ただし、使用が完了するとファイルが自動的に解放されるため、ファイルを処理するにはキーワードなどのコンテキスト マネージャーを使用するのが標準的な方法です。
open() 構文を使用した Python:
構文:
open(file_path、mode、encoding) をファイルとして使用:
…
ファイルパス: 開くファイルへのパスです
モード: ファイルの操作モード。例: read、write など (r、w、r+、w+、rb、wb などで表されます)
エンコーディング: 正しいエンコード形式でファイルを読み取ります。
例 1: with ステートメントを使用した簡単な例
すでにファイル名があります geeksforgeeks.txt 私たちのシステムには次のデータがあります。

オタクフォーギーク、txt
次に、ファイルを開いて、with open() ステートメントを使用してファイルの内容を読み取ります。
Python3
with> open> (> 'geeksforgeeks.txt'> ,> 'r'> ) as gfg_file:> > file_content> => gfg_file.read()> > print> (file_content)> |
>
世界で一番美しい笑顔
>
出力:
GeeksForGeeks is best for DSA>
注記: ここではモードを次のように使用しました r 対象ファイルにはテキストデータが含まれているため、データを読み込みます。バイナリ ファイルを読み取る場合は、次のようにする必要があります。 RB モードとして。
例 2: を使用することもできます。 と ファイルにデータを追加または書き込むステートメント。
文字列を追加していきます オタクの皆さん、こんにちは! geeksforgeeks.txt ファイルに追加します。
Python3
# appending string to file> with> open> (> 'geeksforgeeks.txt'> ,> 'a'> ) as gfg_file:> > gfg_file.write(> '
Hello Geeks!'> )> > # reading the file contents> # to verify if successfully appended the data> with> open> (> 'geeksforgeeks.txt'> ,> 'r'> ) as gfg_file:> > content> => gfg_file.read()> > print> (content)> |
>
>
出力:
GeeksForGeeks is best for DSA Hello Geeks!>
注記: ここで使用したのは、 ある ファイルを開くモードとして、ファイル データに追加したいためです。代わりに、ファイル データを上書きしたい場合は、 で モード。
例 3: ネストされた with open ステートメントを使用して複数のファイルを開く

リンク.txt
を定義しました。 リンク.txt ファイルにはランダムなリンクがいくつか含まれています。を開きます。 geeksforgeeks.txt 上記のファイルを開き、リンク ファイルの内容を geeksforgeeks.txt ファイル。
Python3
# appending string to file> with> open> (> 'geeksforgeeks.txt'> ,> 'a'> ) as gfg_file:> > gfg_file.write(> '
Hello Geeks!'> )> > with> open> (> 'links.txt'> ,> 'r'> ) as links_file:> > lines> => links_file.readlines()> > gfg_file.writelines(lines)> |
>
>
geeksforgeeks.txt 変更後のファイルの内容:

オタクフォーギーク、txt
ここで、の内容が次のとおりであることがわかります。 リンク.txt ファイルがに追加されました geeksforgeeks.txt スクリプトの実行後にファイルを作成します。
open() を使用する場合と open() を使用する場合の違い
使用する機能ですが、 開ける() そして と 開ける() まったく同じですが、いくつかの重要な違いがあります。
- open() を使用すると、ファイルが明示的に閉じられていない限り、ファイル ハンドラーを使用できます。 file_handler.close() , ただし、 with open() コンテキストマネージャーを使用する場合、with ブロックの外でファイルハンドラーを使用することはできません。それは上げます ValueError: 閉じられたファイルに対する I/O 操作 その場合。
- open() を使用するときは、開いているファイル インスタンスを明示的に閉じる必要があります。そうしないと、同じファイルを開くときにコードの他の部分でエラーが発生する可能性があります。 open() を使用すると、ファイルのクローズはコンテキスト マネージャーによって処理されます。
- with open() context ステートメントを使用すると、インデントの違いによってコード ブロックを簡単に分離できるため、コードがより整理されます。 open() の場合、ファイル インスタンスを閉じ損なう可能性があり、メモリ リークやその他の I/O 操作エラーが発生する可能性があります。