「ファイル・ディレクトリの操作」の編集履歴(バックアップ)一覧に戻る
ファイル・ディレクトリの操作 - (2025/03/10 (月) 23:44:33) のソース
** 目次 #contents ** ファイルやディレクトリの存在を確認する os.pathモジュールのexists関数を使う。exists関数はファイルかディレクトリかを判別することできないことに注意。ファイルとディレクトリを判別するには、isfile関数かisdir関数を使う。 #highlight(){{ >>> import os >>> os.path.exists("C:\\Windows") True >>> os.path.exists("C:\\macOS") False >>> os.path.exists("C:\\Windows\\win.ini") True >>> os.path.exists("C:\\Windows\\macOS.ini") False >>> os.path.isfile("C:\\Windows") False >>> os.path.isdir("C:\\Windows") True >>> os.path.isfile("C:\\Windows\\win.ini") True >>> os.path.isdir("C:\\Windows\\win.ini") False >>> os.path.isfile("C:\\Windows\\macOS.ini") False >>> os.path.isdir("C:\\Windows\\macOS.ini") False }} ** ファイルかディレクトリかを判定する os.pathモジュールのisfile関数かisdir関数を使う。存在しないファイルやディレクトリを指定した場合は、例外が発生したりはせず単純にFalseが返される。 #highlight(){{ >>> import os >>> os.path.isfile("C:\\Windows") False >>> os.path.isdir("C:\\Windows") True >>> os.path.isfile("C:\\Windows\\win.ini") True >>> os.path.isdir("C:\\Windows\\win.ini") False >>> os.path.isdir("C:\\macOS") False >>> os.path.isdir("C:\\Windows\\macOS.ini") False }} ** ファイルやディレクトリのパスを連結する osモジュールのpath.join関数を使う。以下は、自動的に削除される一時ディレクトリを利用して、temp1.txtとtemp2.txtという2つのファイルについてパスを連結して出力と読み込み行った例。文字コードはUTF-8にしてpathjoin.pyと保存する。一方はpath.join関数を使って連結し、もう一方は+演算子を使用して手動で文字列として連結して行っている。いずれも問題なく読み書きできることが分かる。 ソースコード #highlight(){{ # coding=utf_8 import os import tempfile with tempfile.TemporaryDirectory() as tempd: with open(os.path.join(tempd, 'temp1.txt'), 'w+t') as f1: with open(tempd + os.path.sep + 'temp2.txt', 'w+t') as f2: print('[一時ファイル1と2の作成]') print(f1.name) print(f2.name) print('[一時ファイル1への書き出し]') f1.write('スノウブレイクのリフ-ムゲン知眼役の瀬戸麻紗美さん') f1.write('かわいい') print('[一時ファイル2への書き出し]') f2.write('マクロスΔのフレイア役の鈴木みのりさん') f2.write('かわいい') f1.seek(0) f2.seek(0) print('[一時ファイル1と2からの読み込み]') print(f1.read()) print(f2.read()) }} 実行結果 #highlight(){{ (base) >python pathjoin.py [一時ファイル1と2の作成] C:\Users\○○○\AppData\Local\Temp\○○○\temp1.txt C:\Users\○○○\AppData\Local\Temp\○○○\temp2.txt [一時ファイル1への書き出し] [一時ファイル2への書き出し] [一時ファイル1と2からの読み込み] スノウブレイクのリフ-ムゲン知眼役の瀬戸麻紗美さんかわいい マクロスΔのフレイア役の鈴木みのりさんかわいい }}