GeeksforGeeks
前提条件。
- アクセスモード
 - ファイルを開く
 - ファイルを閉じる
 
Pythonには、ファイルを作成、書き込み、読み取るための機能が組み込まれています。 pythonで扱えるファイルには、通常のテキストファイルとバイナリファイル(0と1のバイナリ言語で書かれたファイル)の2種類があります。
Reading line by line
Using readlines()
readlines()は、一度にすべての行を読み込んで、各行をリストの文字列要素として返します。 この関数は、ファイルの内容全体をメモリに読み込んだ後、各行に分割するため、小さなファイルに使用することができます。 このリストを繰り返し処理し、 strip() 関数を使用して改行文字 ‘\n’ を除去することができます。
例を示します。
= file1 =open('myfile.txt', 'w') file1.writelines(L)file1.close()file1 =open('myfile.txt', 'r') Lines =file1.readlines() count =0 forline inLines: count +=1 div
 print("Line{}: {}".format(count, line.strip())) 出力します。
Line1: GeeksLine2: forLine3: Geeks
readline()の使用
readline()関数は、ファイルの一行を読み込んで、文字列の形で返します。 パラメータnには、読み込まれる最大バイト数を指定します。 ただし、nが行の長さを超えていても、1行以上の読み込みは行いません。 readline()は、ファイルの次の行を返しますが、その行の最後には改行文字が含まれています。 また、ファイルの終わりに到達した場合は、空の文字列を返します。
例を示します。
L = file1 =open('myfile.txt', 'w') file1.writelines((L))file1.close()file1 =div open('myfile.txt', 'r') count =div 0 whileTrue:  iv  count +=1 
   line =file1.readline()      ifnotline:  break  print("Line{}: {}".format(count, line.strip())) file1.close()です。
出力です。
Line1 GeeksLine2 forLine3 Geeks
forループの使用
open()関数でファイルを開く際に反復可能なオブジェクトが返されます。 ファイルを一行ごとに読み込む最後の方法として、forループでファイルオブジェクトを繰り返し処理する方法があります。 この方法では、Pythonの組み込み関数を利用して、イテレート可能なオブジェクトを使用しながら、forループを使用して暗黙的にファイルオブジェクトをイテレートすることができます。 この方法は、コードの行数が少なくて済み、常に従うべきベスト プラクティスと言えます。
例を示します。
L = file1 =open('myfile.txt', 'w') file1.writelines(L)file1.close()file1 =open('myfile.txt', 'r') count =0 print("Using for loop") forline infile1:  count +=1  print("Line{}: {}".format(count, line.strip())) file1.close()出力します。
Using for loopLine1: GeeksLine2: forLine3: Geeks
With ステートメント
上記のアプローチでは、ファイルを開くたびに明示的に閉じる必要があります。 ファイルを閉じるのを忘れると、コードにいくつかのバグが発生する可能性があります。つまり、ファイルの多くの変更は、ファイルが適切に閉じられるまで有効になりません。 これを防ぐために、with文を使うことができます。 PythonのWith文は、例外処理の際に使用され、コードをすっきりさせ、より読みやすくします。 また、ファイルストリームのような共通リソースの管理を簡単にします。 次のコード例では、with文の使用によりコードがどのようにすっきりするかを観察してください。 with文を使うと、file.close()を呼び出す必要がありません。 with ステートメント自体が、リソースの適切な取得と解放を保証します。
例を挙げます。
L = with open("myfile.txt", "w") as fp:  fp.writelines(L) count =div 0 print("Using readlines()") with open("myfile.txt") as fp:  Lines =fp.readlines()  forline inLines: count +=1  print("Line{}: {}".format(count, line.strip())) count =0 div div
print("\nUsing readline()") iv
with open("myfile.txt") as fp:  whileTrue:  count +=1  line =fp.readline()  ifnotline:  break  print("Line{}: {}".format(count, line.strip())) count =0 print("\nUsing for loop") iv
with open("myfile.txt") as fp:  forline infp:  count +=1  print("Line{}: {}".format(count, line.strip())) 出力します。
Using readlines()Line1: GeeksLine2: forLine3: GeeksUsing readline()Line1: GeeksLine2: forLine3: GeeksUsing for loopLine1: GeeksLine2: forLine3: Geeks