Intro to Python
ファイル・ディレクトリの操作
最終更新:
introtopython
目次
ファイルやディレクトリの存在を確認する
os.pathモジュールのexists関数を使う。exists関数はファイルかディレクトリかを判別することできないことに注意。ファイルとディレクトリを判別するには、isfile関数かisdir関数を使う。
>>> 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が返される。
>>> 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関数を使って連結し、もう一方は+演算子を使用して手動で文字列として連結して行っている。いずれも問題なく読み書きできることが分かる。
ソースコード
# 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())
実行結果
(base) >python pathjoin.py
[一時ファイル1と2の作成]
C:\Users\○○○\AppData\Local\Temp\○○○\temp1.txt
C:\Users\○○○\AppData\Local\Temp\○○○\temp2.txt
[一時ファイル1への書き出し]
[一時ファイル2への書き出し]
[一時ファイル1と2からの読み込み]
スノウブレイクのリフ-ムゲン知眼役の瀬戸麻紗美さんかわいい
マクロスΔのフレイア役の鈴木みのりさんかわいい