この記事の内容
Pythonで、テキストファイルの読込方法について解説しています。
基本的な内容で、よく使う処理になりますので、確実におさえておく必要のある項目です。
この記事を読むことで、以下の内容を理解することができます。
- テキストファイルを開く/閉じる処理
- テキストファイルの各種読込処理
では、実際のソースコードを交えながら説明を進めていきます。
テキストファイルの読込方法
ファイルを開く/閉じる
まずは、テキストファイルを読み込むために必要な、ファイルを開くおよび閉じる処理について解説します。
open(ファイルパス)でファイルを開くことができます。
file.close()でファイルを閉じることができます。
注意すべきは、ファイルをopenしたまま、エラーが発生して、close()が呼ばれないと、ファイルが開いたままの状態になってしまいます。
これを防ぐために、finallyでfile.close()をして、エラー発生時も確実にファイルを閉じるようにしています。
def main(file_path): file = open(file_path) try: # 処理を記載 finally: # エラーが発生しても、確実にファイルを閉じるために、finallyでfileを閉じる file.close() if __name__ == "__main__": file_path = 'sample.txt' main(file_path)
また、上記と同様に、エラーが発生しても、close()を呼ぶための方法が別にあります。
withを使用する方法になります。
こちらのほうが簡潔でよく使われます。
withのスコープを抜けると、自動的にclose()処理を呼び出してくれます。
def main(file_path): with open(file_path) as file: # 処理を記載 # withのスコープを抜けると、自動的にclose()を呼び出してくれる if __name__ == "__main__": file_path = 'sample.txt' main(file_path)
テキストファイルの読込(バイト数単位)
以下の内容のsample.txtを読込ます。
This is the second line.
This is the last line.
まずは、file.read(読み込むバイト数)でテキストファイルの内容を読み込む処理になります。
以下の通り、10byte分読み込んだ結果がprint()で表示されます。
def main(file_path): with open(file_path) as file: # 10byte読み込む text = file.read(10) # 10byte分表示される print(text) # >> This is th if __name__ == "__main__": file_path = 'sample.txt' main(file_path)
テキストファイルの読込(行単位)
先ほどは、byte数を指定して読み込みました。
次に行単位で読み込む処理を行います。
行単位は、readline()関数を使用します。
def main(file_path): with open(file_path) as file: # 1行読み込む text = file.readline() # 1行分表示される print(text) # >> This is the first line. if __name__ == "__main__": file_path = 'sample.txt' main(file_path)
readline()を続けて呼ぶとどうなるかを説明します。
1回目は1行目が読み込まれました。
2回目は、1行目はすでに読み込まれているので2行目が読み込まれることになります。
def main(file_path): with open(file_path) as file: # 1行読み込む text = file.readline() # 1行分表示される print(text) # >> This is the first line. # 1行読み込む(1行目はすでに読み込んでいるので、次の行(2行目)が読み込まれる) text = file.readline() # 1行分表示される(2行目) print(text) # >> This is the second line. if __name__ == "__main__": file_path = 'sample.txt' main(file_path)
テキストファイルの読込(全行読み込み)
では、すべての行を読み込む場合どうするかを解説します。
readlines()関数を使用します。
この関数を使用することで、すべての行を読み込むことができます。
読み込みは、list形式で読み込まれます。
def main(file_path): with open(file_path) as file: # 全ての行を読み込む(list形式で読み込み) text = file.readlines() # 全ての行が表示される(list) print(text) # >> ['This is the first line.\n', 'This is the second line.\n', 'This is the last line.'] print(type(text)) # >> <class 'list'> if __name__ == "__main__": file_path = 'sample.txt' main(file_path)
まとめ
この記事では、以下のテキストファイルの読込処理方法について学びました。
- ファイルを開く/閉じる方法
- ファイルをbyte単位で読み込む方法
- ファイルを行単位で読み込む方法
- ファイルを全行読み込む方法
コメント