Pythonにおけるテキストファイルの操作方法


ccc

こんにちわ!東京都内でサラリーマンをしているAI・育児ブロガーのCCCです。 AI(人工知能)と子育てに関する記事を執筆しています。 WebシステムをベースとしたAIを活用することで生活をより便利にする方法を紹介し、育児について衣食住における役立つグッズや情報を配信しています。


Pythonにおけるテキストファイルの操作方法を教えてください。


ccc

Pythonはオフサイドルールに基づいたオブジェクト指向型のスクリプト言語です。オフサイドルールとは処理のまとまりをブロックごとに字下げをして文の範囲を指定するコーディングルールで、字下げのルールを強制することで可読性が高まり、コードの記述量を少なくできます。数値計算や画像処理、Web開発、ネットワーク、データベースといった専門的なライブラリが豊富で、機械学習やAIの分野で活用されています。


ccc

今回はPythonの使い方として、Pythonにおけるテキストファイルの操作方法をサンプルを用いて解説します。

ファイルを開く

open()はファイルを開く関数です。第1引数にファイル名を指定します。

f=open("test.txt", "r")

第2引数のモードは次のような種類があります。

  • r 読み込み用
  • w+ 読み書き用(ファイルをクリア)
  • a+ 読み書き用(ファイルの末尾に追加)

ファイルを閉じる

close()はファイルを閉じるメソッドです。

f=open("test.txt", "r")
f.close()

ファイルから行単位で読み込む

for文を使ってファイルから行単位で読み込むことができます。

f=open("test.txt", "r")

for i in f:
 print(i)

f.close()
#東京都
#千代田区

ファイルを行単位で分割して配列で取得

readlines()はファイルを行単位で分割して配列で取得するメソッドです。

f=open("test.txt", "r")

temp=f.readlines()
for i in temp:
 print(i)

f.close()
#東京都
#千代田区

ファイルに書き込む

write()はファイルに指定した文字列を書き込むメソッドです。

f=open("test.txt", "w")
f.write("Hello World from Python\n")
f.close()

ファイルを削除

remove()は指定したファイルを削除するメソッドです。事前にosモジュールをインポートします。

import os
os.remove("test.txt")

ディレクトリの作成

mkdir()は指定したディレクトリ名でディレクトリを作成するメソッドです。事前にosモジュールをインポートします。

import os
os.mkdir("test")

ディレクトリを削除

rmdir()は指定したディレクトリを削除するメソッドです。事前にosモジュールをインポートします。ディレクトリの中身が空でないときは削除できません。

import os
os.rmdir("test")

中身を含めてディレクトリを削除

rmtree()は中身を含めてディレクトリを削除するメソッドです。事前にshutilモジュールをインポートします。

import shutil
shutil.rmtree("test")

ファイルまたはディレクトリの存在を確認

exists()はファイルまたはディレクトリの存在を確認するメソッドです。

import os
print(os.path.exists("test.txt")) #ファイルの存在を確認
#True

print(os.path.exists("test")) #フォルダの存在を確認
#True

条件に一致するファイルまたはディレクトリを取得

glob()はワイルドカード(*)を使って条件に一致するファイル(またはディレクトリ)を配列で取得できます。事前にglobモジュールをインポートします。

import glob
for i in glob.glob("*.txt"):
 print(i)
#test1.txt
#test2.txt

第2引数に”recursive=True”を指定すると、サブディレクトリも含めて一覧を配列で取得することもできます。

import glob
for i in glob.glob("test/**/*.txt", recursive=True):
 print(i)
#./test/test1.txt
#./test/test2.txt
#./test/test/test.txt

iglobメソッドを使って配列の代わりにイテレータオブジェクトで一覧を取得することもできます。ファイルをまとめて取得する配列より、ファイルを順に取得するイテレータを使ったほうが実行環境の負荷は少ないです。

import glob
for i in glob.iglob("*.txt"):
 print(i)
#test1.txt
#test2.txt
import glob
for i in glob.iglob("test/**/*.txt", recursive=True):
print(i)
#test/test1.txt
#test/test2.txt
#test/test/test.txt

ファイル名またはディレクトリ名を変更

rename()はファイル名またはディレクトリ名を変更するメソッドです。事前にosモジュールをインポートします。

import os
os.rename("test1.txt", "test2.txt")