Articles

GeeksforGeeks

前提条件。

  • アクセスモード
  • ファイルを開く
  • ファイルを閉じる

Pythonには、ファイルを作成、書き込み、読み取るための機能が組み込まれています。 pythonで扱えるファイルには、通常のテキストファイルとバイナリファイル(0と1のバイナリ言語で書かれたファイル)の2種類があります。

Reading line by line

Using readlines()

readlines()は、一度にすべての行を読み込んで、各行をリストの文字列要素として返します。 この関数は、ファイルの内容全体をメモリに読み込んだ後、各行に分割するため、小さなファイルに使用することができます。 このリストを繰り返し処理し、 strip() 関数を使用して改行文字 ‘\n’ を除去することができます。

例を示します。

Python3

=
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()は、ファイルの次の行を返しますが、その行の最後には改行文字が含まれています。 また、ファイルの終わりに到達した場合は、空の文字列を返します。

例を示します。

Python3

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ループを使用して暗黙的にファイルオブジェクトをイテレートすることができます。 この方法は、コードの行数が少なくて済み、常に従うべきベスト プラクティスと言えます。

例を示します。

Python3

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 ステートメント自体が、リソースの適切な取得と解放を保証します。

例を挙げます。

Python3

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です