この記事の内容
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単位で読み込む方法
- ファイルを行単位で読み込む方法
- ファイルを全行読み込む方法

コメント