logo

withステートメントを使用してファイルを開く方法

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 ステートメントを使用して複数のファイルを開く

withステートメントを使用してファイルを開く方法

リンク.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 変更後のファイルの内容:

withステートメントを使用してファイルを開く方法

オタクフォーギーク、txt

ここで、の内容が次のとおりであることがわかります。 リンク.txt ファイルがに追加されました geeksforgeeks.txt スクリプトの実行後にファイルを作成します。

open() を使用する場合と open() を使用する場合の違い

使用する機能ですが、 開ける() そして 開ける() まったく同じですが、いくつかの重要な違いがあります。

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