おすすめの本:「PythonUniversityPracticalCourse」
初心者に最適
この記事では、Pythonを使用してファイルを読み取り、そのファイルにコンテンツを書き込んで再度保存する方法を学習します。 Pythonを使用して、JSON、CSV、Excelなどの特定のタイプのファイルを読み書きするには、通常、専用のモジュールがあります。ただし、ここでは、Pythonでテキストファイル(.txt)を開きます。
Pythonの open
関数を使用すると、いくつかのメソッドと属性を含むファイルオブジェクトが返されます。これらのメソッドとプロパティを使用して、開いているファイルに関する情報を取得できます。また、これらのメソッドを使用して、開いているファイルを変更できます。
open()
を使用してファイルを読み取りますこのセクションでは、 open()
関数を使用してPythonでファイルをロードする方法を学習します。最も簡単な例は、ファイルを開いてファイルオブジェクトを作成することです。
Pythonの open()
関数を使用してファイルを開く場合、いくつかのパラメーターを使用できます。ただし、最も一般的に使用されるパラメータは最初の2つだけです。最初のものは必須であり、残りはオプションであることに注意してください。 mode
パラメータを追加しない場合、ファイルはPythonで読み取り専用モードで開かれます。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
mode
パラメータファイルの読み取りにはさまざまなモードがあります。前述のように、 mode
パラメータが含まれていない場合、ファイルは読み取り専用として開かれます。以下に示すように、一般的に使用されるいくつかのオープンモードが一覧表示されます。
その中で、 mode = 'r'
は読み取り専用を意味し、 mode =' w'
は書き込み専用を意味し、 mode = 'a'
は追加を意味します。 mode = 'r +'
は読み取りと書き込みが可能であることを意味しますが、ファイルが存在する必要があります。存在しない場合、エラーが報告されます。
次のコード例では、 open()
を使用してファイルを開きます。ファイルとPythonスクリプトが同じディレクトリにあると想定されます。そうでない場合は、パスを追加する必要があります。
exfile =open('example_file')print(exfile)
上の図では、ファイルオブジェクトが読み取り専用モードで開かれていることは明らかであり、 open()
にはファイル名以外のパラメータはありません。したがって、ファイルには何も書き込むことができません。ファイル名を出力する場合は、「print(exfile.name)」と入力するだけです。
次に、 open()
を使用して新しいファイルを作成します。ここで、 mode = 'w'
パラメーターを使用して、ファイルオブジェクトを開き、「ファイルオブジェクトの書き込み」メソッドを使用できるようにします。
exfile =open('example_file2','w')print(exfile)
上の図では、現在のファイルオブジェクトを書き込みモード(「w」)にすることができます。次のコードブロックでは、このファイルに1行のテキストを追加します。
exfile.write('This is example file 2 \n')
もちろん、さらに行を追加することもできます。
exfile.write('Line number 2, in example file 2')
exfile.close()
最後の行のファイルを閉じるには、 close()
を使用する必要があることに注意してください。下の画像では、Pythonで作成されたサンプルファイルを見ることができます。
open()を使用してPythonでテキストファイルを読み取る方法
Pythonでファイルを読み取る次の例では、Pythonでテキストファイル(.txt)を開く方法を学習します。もちろん、これは非常に簡単です。基本的に、この目的を達成するためにPythonを使用する方法を習得しました。つまり、Pythonで.txtファイルのみを読み取りたい場合は、open関数と読み取りモードを使用できます。
txtfile =open('example_file.txt')
この操作は非常に簡単です。ここで、テキストファイルの内容を印刷する場合、3つの方法があります。 1つ目は、ファイルオブジェクトの read()
メソッドを使用して、ファイルの内容全体を読み取ることです。つまり、 txtfile.read()
を使用すると、次の出力が得られます。
2つ目は、 readlines()
を使用してファイルをリストに読み込むことです。
txtfile =open('example_file.txt')print(txtfile.readlines())
この方法では、特定の行が読み取られることを示すパラメーターを指定することもできます。たとえば、次のコードは最初の2行を読み取り、出力します。
txtfile =open('example_file.txt')
line = txtfile.readlines(1)print(line)
line2 = txtfile.readlines(2)print(line2)
最後の方法は、ファイルの内容をループを介して1行ずつ出力することです。
txtfile =open('example_file.txt')for line in txtfile:print(line)
この例では、 .txt
ファイルを開き、追加してコンテンツを追加するため、 'a'
モードで開く必要があります。
open('example_file2.txt','a')
次に、 write()
を使用してコンテンツを追加します。
txtfile.write('\n More text here.')
テキストを追加する場合、少なくともWindows 10では、行の前に \ n
を追加する必要があります。それ以外の場合は、最後の文字の後に(ファイルの最後の行に)新しい行が追加されます。さらに行を追加する場合は、これも忘れずに行う必要があります。
txtfile.write(‘\nLast line of text, I promise.)
txtfile.close()
テキストエディタ(メモ帳、Geditなど)でテキストファイルを開くと、最後の2行が追加されているのがわかります。
withステートメントを使用してファイルを開くことは非常に良い習慣であるため、ファイルを閉じることを覚えておく必要はありません。withステートメントを使用する構文は明確で読みやすいです。
withopen('example_file2.txt')as txtfile2:print(txtfile2.read())
ここで、 read()
メソッドを使用すると、PythonはValueErrorをスローします。
txtfile2.read()
ファイルを読み取った後、文字列の split()
メソッドを使用してテキストファイル内の文を単語に分割し、コレクションモジュールの Counter
クラスを使用して開いているファイル内の単語数をカウントできます。
from collections import Counter
withopen('example_file2.txt')as txtfile2:
wordcount =Counter(txtfile2.read().split())print(len(wordcount))
# Output:43
これで、 Counter
クラスは、すべての単語と各単語の出現回数を含む辞書を返します。したがって、次のようにすべての単語と単語の総数を印刷できます。
for k insorted(wordcount, key=wordcount.get, reverse=True):print(k, wordcount[k])
上記のコード例では、辞書のキーをループして並べ替えます。このようにして、最も一般的な単語が一番上にランク付けされます。もちろん、Pythonを使用して複数の単語を含むファイルを読み取り、このように結果を出力する場合、この操作は実行できません。
上記では、さまざまなモードでファイルを読み取る方法、ファイルを作成および書き込む方法、ファイルにデータを追加する方法、およびwithステートメントを使用してファイルを読み取る方法について説明しました。
Recommended Posts