Pythonを用いてパス、ファイル、フォルダを操作する方法をまとめました。
ファイルの読み込み、書き込みについては、以下の記事を参照してください。
目次
モジュールのインポート
ファイル関係の処理には、osモジュールを使用します。
osモジュールは組み込みモジュールなので、インストールなしで使用可能です、
import os
パスの操作
パス操作時の注意点
windowsでは、パスの区切り文字としてバックスラッシュが使用されていますが、バックスラッシュは特殊な文字なのでそのままでは使用できないことに注意が必要です。
フルパスの前に「r」を付けるか、バックスラッシュの前にバックスラッシュを追加してエスケープする必要があります。
①文字列の前にrを付ける例:
path = r"C:\test"
②バックスラッシュを追加する例:
path = "C:\\test"
カレントディレクトリの変更・取得
カレントディレクトリは、os.chdir(path)
で変更し、os.getcwd()
で取得可能です。
例:
path = "C:\\test" os.chdir(path) print(os.getcwd())
出力:C:\\test
パス(フォルダ・ファイル)の存在確認
パスの存在は、os.path.exists()
で確認可能です。
例:
os.path.exists(path)
出力(パスが存在する場合):True
出力(パスが存在しない場合:False
パスがフォルダorファイルか判断
パスがフォルダかファイルか、os.path.isfile(path)
とos.path.isdir(path)
で判断することができます。
例:
os.path.isfile(path)
出力(パスがファイルの場合):True
出力(パスが存在しないか、フォルダの場合):True
例:
os.path.isdir(path)
出力(パスがフォルダの場合):True
出力(パスが存在しないか、ファイルの場合):True
パスからファイル名を抽出
os.path.basename(path)
を用いて、パスの最後のパス区切り記号(windowsではバックスラッシュ)より後ろの文字列を取得できます。
例:
path = "C:\\test\\test.txt" print(os.path.basename(path))
出力:test.txt
パスにあるファイル、フォルダ名の取得
パスにあるファイル、フォルダ名を、os.isdir(path)
を用いて取得することができます。
ファイル名、フォルダ名はリスト形式で出力されます。
例:
ファイル構成
path = "C:\\test" print(os.listdir(path))
出力:['documents', 'test.txt', 'test2.txt', 'test3.txt']
パスの連結
パスの連結には、os.path.join(path1, path2, ...)
が便利です。
os.path.join
を用いることで、Windows環境とMac環境の違いを気にしないで正しいパスの文字列を生成することができます。
path = os.pah.join("test", "documents", "temp") print(path)
出力:test\documents\temp
ファイル・フォルダの操作
フォルダの生成
フォルダの作成はos.makedirs(path)
で行います。
例:
path = "C:\\test\\documents\\letters" os.makedirs(path)
中間フォルダである「test」フォルダや「documents」フォルダが存在しない場合は、自動で作成してくれます。
フォルダの削除
フォルダの削除はos.removedirs(path)
で行います。
但し、フォルダの中身が空の場合に限ります。フォルダ内にファイルやサブフォルダがあると削除できません。 また、フォルダは完全に削除され、復元はできません。
例:
path = "C:\\test\\documents\\letters" os.removedirs(path)
ファイルの削除
ファイルの削除はos.remove(path)
で行います。
こちらも、ファイルは完全に削除され、復元はできません。
例:
path = "C:\\test\\test.txt" os.remove(path)
ファイル・フォルダ名の変更
ファイル名やフォルダ名の変更は、os.renames(path1, path2)
で行います。
path1からpath2へと名前を変更します。
例:
path1 = "C:\\test\\documents\\letters" path2 = "C:\\test\\documents\\message" os.renames(path1, path2)