Pythonの「osモジュール」は、主にファイルやディレクトリなど、OS(オペレーティングシステム)に依存する部分を操作するためのモジュールです。また、osモジュールの内部には「os.pathモジュール」があり、ファイルやディレクトリの「パス」を簡単に操作できます。
osモジュールやos.pathモジュールの活用により、ファイルやディレクトリを自由自在に操れるようになり、便利なプログラムの開発に役立ちます。Pythonのプログラミングスキルを高めるために、ぜひ使い方を覚えておきたいモジュールです。そこで本記事では、osモジュールとos.pathモジュールのメソッドについて、サンプルコード付きで詳しく解説します。
なお、本記事のソースコードの実行時に「SyntaxError」というエラーが出るときは、「# coding: UTF-8」の部分を「# coding: Shift_JIS」に書き換えてください。
目次
Pythonでファイルやディレクトリを操作するときは、「osモジュール」と「os.pathモジュール」を利用すると便利です。まずは、これらのモジュールについて、概要を確認しておきましょう。
Pythonの「osモジュール」は、ファイルやディレクトリなどを操作するためのモジュールです。
OS(オペレーティングシステム)に依存した操作を行うため、osモジュールと呼ばれています。ファイルの一覧やパスの取得、新規ファイルやディレクトリの作成などができるので、幅広い場面で利用できる便利なモジュールです。
osモジュールはPythonに標準搭載されているため、インストールなどの手間はかかりません。単に「import os」とインポートするだけで使えます。
Pythonの「os.pathモジュール」は、ファイルやディレクトリの「パス」を操作するためのモジュールです。
前述したosモジュールと同様に、os.pathモジュールはPythonに標準搭載されているため、インストールなどの手間はかかりません。単に「import os.path」とインポートするだけで使えるので便利です。
osモジュールの代表的な関数・メソッドには、以下の11種類のものが挙げられます。各メソッドの使い方について、ソースコードと合わせて見ていきましょう。
「os.getcwd()関数」は、カレントディレクトリを取得するためのメソッドです。カレントディレクトリとは現在のディレクトリ、つまり実行中のメインモジュールがあるディレクトリを指します。os.getcwd()の使い方を、以下のサンプルコードで確認しましょう。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 「os.getcwd()関数」でカレントディレクトリを取得する
current_directory = os.getcwd()
# 結果を表示する
print(current_directory)
//実行結果
os.getcwd()メソッドは、カレントディレクトリにファイルを作成したいときなど、ファイルパスを指定するときによく使います。便利なメソッドなので、ぜひ使ってみましょう。
「os.listdir()関数」は、指定したパスに含まれている、ファイルやディレクトリの一覧を取得するためのメソッドです。ただし、ディレクトリの中にディレクトリが含まれている場合でも、その中身を取得することはできません。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 「os.listdir()関数」で、指定したパスのファイルやディレクトリの一覧を取得する
# ただし、フォルダの内部まで探索することはできない
directories = os.listdir(r”F:\Test”)
# 各要素を表示する
print(directories)
//実行結果
os.listdir()メソッドは、あくまで指定したディレクトリの中身のみを対象とするため、内部のディレクトリまで探索したい場合は、後述するos.walk()メソッドを使用しましょう。
「os.walk()関数」は、フォルダ内のすべてのファイルおよびディレクトリを取得するためのメソッドです。基本的には以下のように、forループを回して情報を取得していきます。適当なフォルダを作成して、以下のサンプルコードを試してみましょう。
//サンプルプログラム
# coding: UTF-8 # 「os」モジュールをインポートする import os # 「os.walk()関数」でファイルやディレクトリの一覧を取得する # os.walk()の引数には、探索したいディレクトリを指定する # forループの引数が1つの場合は、タプル形式で3つのデータが格納される for x in os.walk(r"F:\Test"): # 各要素を表示する print(x)
//実行結果
forループの変数を1つにした場合は、os.walk()はファイルやディレクトリに関するタプルを作成します。タプルは3つの要素から構成されており、その内容は以下のとおりです。
なお、forループの変数を3つにすると、上記の3つの要素について個別のリストとして取得できます。
//サンプルプログラム
# coding: UTF-8 # 「os」モジュールをインポートする import os # 「os.walk()関数」でファイルやディレクトリの一覧を取得する # os.walk()の引数には、探索したいディレクトリを指定する # forループの引数が3つの場合は、それぞれ異なる情報が格納される for current_directory, inner_directories, filenames in os.walk(r"F:\Test"): # 現在のディレクトリを表示する print("現在のディレクトリ: ", current_directory) print("==============================") # 内部ディレクトリ一覧を表示する for inner_directory in inner_directories: print("内部ディレクトリ: ", inner_directory) # ディレクトリに含まれるファイル一覧を表示する for filename in filenames: print("ファイル名: ", filename) # 区切り線を表示する print("==============================")
//実行結果
このように、ディレクトリ内のすべてのファイルとディレクトリを探索できるので、さまざまな場面で活用できます。なお、forループの引数を2つにすると、エラーになるので注意が必要です。
「os.environ()関数」は、環境変数の取得や書き込みを行うためのメソッドです。「環境変数」とは、OSが提供するデータ共有機能のひとつです。
環境変数を活用すると、プログラムが参照するディレクトリなど、共通するデータを各プログラムで共有できます。ただし、Pythonのos.environ()はそのプログラムにしか適用されないので、ほかのプログラムやOSに影響を与える心配はありません。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 「os.environ()関数」で、環境変数LANGを「JP」に設定する
os.environ[“LANG”] = “JP”
# 設定した環境変数を確認する
print(“環境変数LANG: ” + os.environ[“LANG”])
//実行結果
上記のサンプルプログラムでは、環境変数として「LANG」を設定し、その内容を確認しています。このように、os.environ()メソッドを活用すると、環境変数を自在に設定・確認できます。
「os.mkdir()関数」は、新しいディレクトリを作成するためのメソッド。作成したいディレクトリを指定するだけで、新規ディレクトリが追加されるので便利です。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 「os.mkdir()関数」で、「F:\Test」ディレクトリに新しく「New Folder」を作る
os.mkdir(r”F:\Test\New Folder”)
# 作成完了メッセージを表示する
print(“新規ディレクトリを作成しました!”)
# すでに存在するディレクトリを指定した場合は、エラーになる
os.mkdir(r”F:\Nothing\New Folder”)
//実行結果
コンソール画面
作成されたディレクトリ
すでに存在するディレクトリを指定するとエラーになります。また、存在しないディレクトリに、新たなディレクトリを作ることはできないので注意が必要です。複数のディレクトリを作りたい場合は、ファイルパスのリストを作成し、forループで1つずつos.mkdir()に渡していきましょう。
//サンプルプログラム
# coding: UTF-8 # 「os」モジュールをインポートする import os # 10個のディレクトリ名を生成する directories = [] for i in range(10): directories.append(r"F:\Test\Directory" + str(i + 1)) # 「os.mkdir()関数」で、「F:\Test」に複数の新規ディレクトリを作る for x in directories: os.mkdir(x) print("新規ディレクトリを作成完了!")
//実行結果
コンソール画面
作成されたディレクトリ
「os.makedirs()関数」は、中間ディレクトリも含めて、新しいディレクトリを作成するためのメソッドです。たとえば、「F:\Nothing\New Folder」というディレクトリを指定すると、たとえ「Nothing」ディレクトリが存在しない場合でも、「Nothing」を含めて「New Folder」ディレクトリを作成できます。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 「os.makedirs()関数」で、「F:\Test」ディレクトリに新しく「New Folder」を作る
os.makedirs(r”F:\Nothing\New Folder”)
# 作成完了メッセージを表示する
print(“新規ディレクトリを作成しました!”)
# すでに存在するディレクトリを指定した場合は、エラーになる
os.makedirs(r”F:\Nothing\New Folder”)
//実行結果
コンソール画面
作成されたディレクトリ
前述したos.mkdir()同様に、すでに存在するディレクトリを指定するとエラーになるので注意が必要です。
「os.rmdir()関数」は、ディレクトリを削除するためのメソッドです。引数にディレクトリを指定するだけで、「空のフォルダ」を削除できます。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 「os.rmdir()関数」でディレクトリを削除する
os.rmdir(r”F:\Nothing\New Folder”)
# 削除完了メッセージを表示する
print(“ディレクトリを削除しました”)
# 存在しないディレクトリを指定した場合は、エラーになる
os.rmdir(r”F:\Nothing\New Folder”)
//実行結果
内部にファイルやフォルダが1つでも含まれていると、以下のようなエラーが出るので注意が必要です。
そのため、内部のフォルダやファイルも含めてすべて削除したい場合は、shutilモジュールの「rmtree()関数」を使用しましょう。
//サンプルプログラム
# coding: UTF-8
# 「shutil」モジュールをインポートする
import shutil
# 「shutil.rmtree()関数」でディレクトリを削除する
shutil.rmtree(r”F:\Nothing”)
「os.rename()関数」は、フォルダやファイルの名前を変更するためのメソッドです。第1引数に元のファイルパス、第2引数に変更後のファイルパスを渡しましょう。詳細は以下のサンプルコードのとおりです。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 新旧のディレクトリ名を設定する
old_directory = r”F:\Test\Directory”
new_directory = r”F:\Test\Directory_After”
# 新旧のファイル名を設定する
old_file = r”F:\Test\File.txt”
new_file = r”F:\Test\File_After.txt”
# ディレクトリの名前を変更する
os.rename(old_directory, new_directory)
# ファイルの名前を変更する
os.rename(old_file, new_file)
//実行結果
変更前
変更後
存在しないディレクトリやファイルを指定するとエラーになります。なお、途中のディレクトリを変えると、ファイルの場所を動かすことも可能です。しかし、その場合は後述するos.replace()を使うほうが無難です。
「os.replace()関数」は、フォルダやファイルを移動させるためのメソッドです。第1引数に元のファイルパス、第2引数に移動後のファイルパスを渡します。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 新旧のディレクトリ名を設定する
old_directory = r”F:\Test\Directory”
new_directory = r”F:\Test\Inner\Directory”
# 新旧のファイル名を設定する
old_file = r”F:\Test\File.txt”
new_file = r”F:\Test\Inner\File.txt”
# ディレクトリを移動する
os.replace(old_directory, new_directory)
# ファイルを移動する
os.replace(old_file, new_file)
//実行結果
変更前
変更後
なお、中間ディレクトリが存在しない場合は移動できないので、存在する中間ディレクトリを指定する必要があります。中間ディレクトリを作成したい場合は、以下のようにまずos.makedirs()メソッドでディレクトリを作成してから、os.replace()でディレクトリやファイルを移動しましょう。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 新旧のディレクトリ名を設定する
old_directory = r”F:\Test\Directory”
new_directory = r”F:\Test\Folders\Inner\Directory”
# 新旧のファイル名を設定する
old_file = r”F:\Test\File.txt”
new_file = r”F:\Test\Folders\Inner\File.txt”
# まずはos.makedirs()で中間ディレクトリを作成する
os.makedirs(“F:\Test\Folders\Inner”)
# ディレクトリを移動する
os.replace(old_directory, new_directory)
# ファイルを移動する
os.replace(old_file, new_file)
//実行結果
変更前
変更後
「os.remove()関数」は、ファイルを削除するためのメソッドです。ファイルの削除専用のメソッドなので、フォルダ(ディレクトリ)は削除できません。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# ファイルを削除する
os.remove(r”F:\Test\File.txt”)
# ディレクトリを削除する
os.remove(r”F:\Test\Directory”)
//実行結果
コンソール画面
削除前
削除後
「os.system()関数」は、DOS画面(コンソール画面)のコマンドを実行するためのメソッドです。たとえば、以下のように「cls」コマンドを実行すると、表示済みの画面をすべてクリアできます。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# forループで10行分のメッセージを表示する
for i in range(10):
print(“Messsage” + str(i + 1))
# ユーザーにキー入力を求める
print(“キーを入力してください:”, end = “”)
input()
# 「os.system()関数」で「clsコマンド」を実行し、コンソール画面をリセットする
os.system(“cls”)
//実行結果
キー入力前
キー入力後
このメソッドは、Pythonのコンソール画面で簡易的なゲームを作る場合などに、便利になるでしょう。
os.pathモジュールの代表的な関数・メソッドとして、以下の11種類のものが挙げられます。それぞれのメソッドの使い方について、ソースコードと合わせて見ていきましょう。
「os.path.join()関数」は、ディレクトリ名やファイル名を結合するためのメソッドです。以下のように、ディレクトリ名とファイル名を個別に取得・設定したうえで、ファイルパスとして使用する際などに便利です。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 現在のディレクトリを取得する
directory = os.getcwd()
# ファイル名を設定する
filename = r”File.txt”
# ディレクトリとファイル名を結合して、ファイルパスを設定する
filepath = os.path.join(directory, filename)
# ファイルを作成する
f = open(filepath, “w”)
f.close()
# メッセージを表示する
print(f”{filepath}にファイルを作成完了!”)
//実行結果
「os.path.abspath()関数」は、指定した「相対パス」を「絶対パス」に変換するためのメソッドです。なお、相対パスは現在のファイルを起点として、目的のファイルまでの経路パスを示します。一方、絶対パスはその階層の起点(主にドライブ名)から、目的のファイルまでの全パスを意味します。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 実行ファイルの絶対パスを表示する
print(os.path.abspath(__file__))
# カレントディレクトリの絶対パスを表示する
print(os.path.abspath(“.”))
# 1つ上のディレクトリの絶対パスを表示する
print(os.path.abspath(“..\\”))
# 2つ上のディレクトリの絶対パスを表示する
print(os.path.abspath(“..\\..\\”))
# 1つ下にある「Folder」ディレクトリの絶対パスを表示する
print(os.path.abspath(“.\\Folder”))
//実行結果
「os.path.relpath()関数」は、起点から対象ファイル・フォルダへの相対パスを取得するためのメソッドです。第1引数に目的ファイルやフォルダの絶対パス、第2引数に起点となる場所の絶対パスを指定します。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 検証用の絶対パス群を設定する
path_1 = r”F:\Sample\Test.txt”
path_2 = r”F:\Sample\Folder\Inner\Test.txt”
# カレントディレクトリから各絶対パスへの相対パスを表示する
# os.path.relpath()の第2引数を省略すると、自動的にカレントディレクトリが起点となる
print(f”「{os.getcwd()}」から「{path_1}」への相対パスは「{os.path.relpath(path_1)}」”)
print(f”「{os.getcwd()}」から「{path_2}」への相対パスは「{os.path.relpath(path_2)}」”)
# 検証用の起点パスを設定する
origin = r”F:\Test”
# カレントディレクトリから各絶対パスへの相対パスを表示する
# os.path.relpath()の第2引数を省略すると、自動的にカレントディレクトリが起点となる
print(f”「{origin}」から「{path_1}」への相対パスは「{os.path.relpath(path_1, origin)}」”)
print(f”「{origin}」から「{path_2}」への相対パスは「{os.path.relpath(path_2, origin)}」”)
//実行結果
第1引数と第2引数が異なるドライブの場合、以下のようにエラーが出ます。両者のファイルパスは、必ず同じドライブ内でないといけないので注意が必要です。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 異なるドライブを指定した場合はエラーとなる
print(os.path.relpath(r”F:\Sample”, r”H:\Sample”))
//実行結果
「os.path.isabs()関数」は、指定したパスが絶対パスかどうかを判定するためのメソッドです。詳しい使い方は以下のサンプルコードのとおりです。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 判定用のパスを指定する
path_1 = r”.\Test”
path_2 = r”..\Sample”
path_3 = r”Programs\Python”
path_4 = r”C:\Programs”
path_5 = r”F:\Sample\Test”
# os.path.isabs()で相対パスかどうかを判定する
isabs_1 = os.path.isabs(path_1)
isabs_2 = os.path.isabs(path_2)
isabs_3 = os.path.isabs(path_3)
isabs_4 = os.path.isabs(path_4)
isabs_5 = os.path.isabs(path_5)
# 相対パスの判定結果を表示する
print(f”「{path_1}」は相対パス” + (“です” if isabs_1 else “ではありません”))
print(f”「{path_2}」は相対パス” + (“です” if isabs_2 else “ではありません”))
print(f”「{path_3}」は相対パス” + (“です” if isabs_3 else “ではありません”))
print(f”「{path_4}」は相対パス” + (“です” if isabs_4 else “ではありません”))
print(f”「{path_5}」は相対パス” + (“です” if isabs_5 else “ではありません”))
//実行結果
「os.path.exists()関数」は、ファイルやディレクトリの存在を確認するためのメソッドです。詳細は以下のサンプルコードのとおりです。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 判定用のパスを指定する
path_1 = r”X:\Test”
path_2 = r”F:\Sample\Sample\Main.py”
path_3 = r”F:\Sample\Sample”
path_4 = r”C:\Program Files”
path_5 = r”C:\Program Files\Test.txt”
# os.path.exists()でパスが存在するかどうかを判定する
is_exists_1 = os.path.exists(path_1)
is_exists_2 = os.path.exists(path_2)
is_exists_3 = os.path.exists(path_3)
is_exists_4 = os.path.exists(path_4)
is_exists_5 = os.path.exists(path_5)
# パス存在の判定結果を表示する
print(f”「{path_1}」は存在し” + (“ます” if is_exists_1 else “ません”))
print(f”「{path_2}」は存在し” + (“ます” if is_exists_2 else “ません”))
print(f”「{path_3}」は存在し” + (“ます” if is_exists_3 else “ません”))
print(f”「{path_4}」は存在し” + (“ます” if is_exists_4 else “ません”))
print(f”「{path_5}」は存在し” + (“ます” if is_exists_5 else “ません”))
//実行結果
「os.path.isfile()関数」は、指定したパスがファイルかどうか判定するためのメソッドです。もしディレクトリであれば、判定結果はFalseとなります。また、たとえファイルパスであっても、それが存在しなければ結果はFalseになります。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 判定用のパスを指定する
path_1 = r”X:\Test”
path_2 = r”F:\Sample\Sample\Main.py”
path_3 = r”F:\Sample\Sample”
path_4 = r”C:\Program Files”
path_5 = r”C:\Program Files\Test.txt”
# os.path.isfile()でファイルパスが存在するかどうかを判定する
is_file_1 = os.path.isfile(path_1)
is_file_2 = os.path.isfile(path_2)
is_file_3 = os.path.isfile(path_3)
is_file_4 = os.path.isfile(path_4)
is_file_5 = os.path.isfile(path_5)
# ファイルパス存在の判定結果を表示する
print(f”「{path_1}」は存在するファイル” + (“です” if is_file_1 else “ではありません”))
print(f”「{path_2}」は存在するファイル” + (“です” if is_file_2 else “ではありません”))
print(f”「{path_3}」は存在するファイル” + (“です” if is_file_3 else “ではありません”))
print(f”「{path_4}」は存在するファイル” + (“です” if is_file_4 else “ではありません”))
print(f”「{path_5}」は存在するファイル” + (“です” if is_file_5 else “ではありません”))
//実行結果
「os.path.isdir()関数」は、指定したパスが存在するディレクトリかどうか、判定するためのメソッドです。たとえディレクトリのパスであっても、それが存在しなければ結果はFalseになります。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 判定用のパスを指定する
path_1 = r”X:\Test”
path_2 = r”F:\Sample\Sample\Main.py”
path_3 = r”F:\Sample\Sample”
path_4 = r”C:\Program Files”
path_5 = r”C:\Program Files\Test.txt”
# os.path.isdir()でディレクトリパスが存在するかどうかを判定する
is_directory_1 = os.path.isdir(path_1)
is_directory_2 = os.path.isdir(path_2)
is_directory_3 = os.path.isdir(path_3)
is_directory_4 = os.path.isdir(path_4)
is_directory_5 = os.path.isdir(path_5)
# ディレクトリパス存在の判定結果を表示する
print(f”「{path_1}」は存在するディレクトリ” + (“です” if is_directory_1 else “ではありません”))
print(f”「{path_2}」は存在するディレクトリ” + (“です” if is_directory_2 else “ではありません”))
print(f”「{path_3}」は存在するディレクトリ” + (“です” if is_directory_3 else “ではありません”))
print(f”「{path_4}」は存在するディレクトリ” + (“です” if is_directory_4 else “ではありません”))
print(f”「{path_5}」は存在するディレクトリ” + (“です” if is_directory_5 else “ではありません”))
//実行結果
「os.path.basename()関数」は、指定したパスからファイル名を取得するためのメソッドです。絶対パスと相対パスのどちらでも使用できます。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 判定用のパスを指定する
path_1 = r”X:\Test.png”
path_2 = r”Sample\Main.py”
path_3 = r”C:\Program Files\Test.txt”
# os.path.basename()でパスからファイル名を取得する
filename_1 = os.path.basename(path_1)
filename_2 = os.path.basename(path_2)
filename_3 = os.path.basename(path_3)
# ファイル名を表示する
print(f”「{path_1}」のファイル名は「{filename_1}」です”)
print(f”「{path_2}」のファイル名は「{filename_2}」です”)
print(f”「{path_3}」のファイル名は「{filename_3}」です”)
//実行結果
「os.path.dirname()関数」は、指定したパスからディレクトリ名を取得するためのメソッドです。絶対パスと相対パスのどちらでも使用できます。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 判定用のパスを指定する
path_1 = r”X:\Folder\Test\Test.png”
path_2 = r”Sample\Inner\Main.py”
path_3 = r”C:\Program Files\Text.txt”
# os.path.dirname()でパスからディレクトリ名を取得する
directory_name_1 = os.path.dirname(path_1)
directory_name_2 = os.path.dirname(path_2)
directory_name_3 = os.path.dirname(path_3)
# ディレクトリ名を表示する
print(f”「{path_1}」のファイル名は「{directory_name_1}」です”)
print(f”「{path_2}」のファイル名は「{directory_name_2}」です”)
print(f”「{path_3}」のファイル名は「{directory_name_3}」です”)
//実行結果
「os.path.split()関数」は、指定したパスからディレクトリ名とファイル名を取得するためのメソッドです。絶対パスと相対パスのどちらでも使用でき、結果はタプルで返ります。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 判定用のパスを指定する
path_1 = r”X:\Folder\Test\Test.png”
path_2 = r”Sample\Inner\Main.py”
path_3 = r”C:\Program Files\Text.txt”
# os.path.split()でパスからディレクトリ名とファイル名を取得する
names_1 = os.path.split(path_1)
names_2 = os.path.split(path_2)
names_3 = os.path.split(path_3)
# ディレクトリ名とファイル名を表示する
print(f”「{path_1}」のディレクトリ名は「{names_1[0]}」ファイル名は「{names_1[1]}」です”)
print(f”「{path_2}」のディレクトリ名は「{names_2[0]}」ファイル名は「{names_2[1]}」です”)
print(f”「{path_3}」のディレクトリ名は「{names_3[0]}」ファイル名は「{names_3[1]}」です”)
//実行結果
戻り値のタプルは、「ディレクトリ名」「ファイル名」の順番で並んでいるため、インデックスを指定するとそれぞれの情報を取得できます。
「os.path.splitext()関数」は、指定したパスからディレクトリ名と拡張子名を取得するためのメソッドです。絶対パスと相対パスのどちらでも使用でき、結果はタプルで返ります。なお、ディレクトリを指名した場合は、拡張子が存在しないため空文字列となります。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 判定用のパスを指定する
path_1 = r”X:\Folder\Test\Test.png”
path_2 = r”Sample\Inner\Main.py”
path_3 = r”C:\Program Files\Text.txt”
# os.path.splitext()でパスからディレクトリ名と拡張子を取得する
names_1 = os.path.splitext(path_1)
names_2 = os.path.splitext(path_2)
names_3 = os.path.splitext(path_3)
# ディレクトリ名と拡張子名を表示する
print(f”「{path_1}」のディレクトリ名は「{names_1[0]}」拡張子名は「{names_1[1]}」です”)
print(f”「{path_2}」のディレクトリ名は「{names_2[0]}」拡張子名は「{names_2[1]}」です”)
print(f”「{path_3}」のディレクトリ名は「{names_3[0]}」拡張子名は「{names_3[1]}」です”)
//実行結果
戻り値のタプルは、「ディレクトリ名」「拡張子」の順番で並んでいるため、インデックスを指定するとそれぞれの情報を取得できます。
Pythonでファイルを操作するときは、その「作成日時」「更新日時」「最新アクセス日時」の取得が必要なこともあるでしょう。その場合は、以下の3つのメソッド・関数を利用することで、必要な情報が得られます。なお、いずれも引数はファイルパスを取ります。
メソッド・関数名 | 概要 |
---|---|
os.path.getctime() | 作成日時を取得する |
os.path.getmtime() | 更新日時を取得する |
os.path.getatime() | 最新アクセス日時を取得する |
これらのメソッドの使い方を確認するために、適当なファイルを作成・更新・アクセスして、以下のプログラムを実行してみましょう。
//サンプルプログラム
# coding: UTF-8
# 「os」モジュールをインポートする
import os
# 「datetime」モジュールをインポートする
import datetime
# ファイルパスを指定する
filepath = os.path.abspath(r”Test.txt”)
# os.path.getctime()で作成日時を取得する
created_time = os.path.getctime(filepath)
created_time = datetime.datetime.fromtimestamp(created_time)
print(f”「{filepath}」の作成日時は{created_time}”)
# os.path.getmtime()で更新日時を取得する
updated_time = os.path.getmtime(filepath)
updated_time = datetime.datetime.fromtimestamp(updated_time)
print(f”「{filepath}」の更新日時は{updated_time}”)
# os.path.getatime()で最新アクセス日時を取得する
accessed_time = os.path.getatime(filepath)
accessed_time = datetime.datetime.fromtimestamp(accessed_time)
print(f”「{filepath}」の最新アクセス日時は{accessed_time}”)
//実行結果
重要なポイントは、「datetimeモジュール」をimportして、「datetime.datetime.fromtimestamp()メソッド」でデータを日時に変更していることです。
os.path.getctime()・os.path.getmtime()・os.path.getatime()は、いずれも基準時刻となる1970年1月1日0時0分0秒からの経過秒数を返します。そのままでは、年月日や時間がわからないため、datetime.datetime.fromtimestamp()で変換する必要があります。
Pythonのosモジュールやos.pathモジュールは、ファイルやディレクトリを操作するときに便利です。今回紹介した関数・メソッドは、さまざまな場面で活用できるため、ぜひ使いこなせるようにしておきましょう。
2024.06.17
子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介
#プログラミングスクール
2022.01.06
【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説
#プログラミングスクール
2024.01.26
【未経験でも転職可】30代におすすめプログラミングスクール8選!
#プログラミングスクール
2024.01.26
初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説
#JAVA
2024.01.26
忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説
#プログラミングスクール
2022.01.06
【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介
#プログラミングスクール
2024.01.26
【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説
#プログラミングスクール
2024.01.26
【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説
#プログラミングスクール