Pythonでのファイル・フォルダパス操作
メイン環境のversionが2.7なので、ver3.0以降では情報が異なる可能性があります。
ご容赦ください。
<os.path.exists> フォルダやファイルの存在を調べる
フォルダが存在するかどうか
import os
folderpath = ("C:\\test_folder\\test1")
print(os.path.exists(folderpath))
# True
os.path.existsを利用する事で指定したフォルダが存在しているかどうかを調べる事が出来ます。
結果はboolで返ります。
フォルダパスを指定する際にはエスケープシーケンス\
に注意が必要です。
r を付けてr"C:\Users\xxx\desktop\xxx"
と表記するか、
もしくは\
を文字列として認識させるために\\
を用いて、"C:\\Users\\xxx\\desktop\\xxx"
と記述する方法があります。
ファイルが存在するかどうか
import os
filepath = ("C:\\test_folder\\test1\\sample.txt")
print(os.path.exists(filepath))
# True
直接ファイル名を指定すれば、ファイルの有無を調べる事が出来ます。
<os.path.isfile>ファイルが存在する事を判定
import os
filepath = ("C:\\test_folder\\test1\\sample")
print(os.path.isfile(filepath))
# True
指定のファイルが存在する場合Trueが返ります。
フォルダだった場合や、ファイルが存在しない場合は、Falseが返ります。
<os.path.isdir>フォルダが存在する事を判定
import os
filepath = ("C:\\test_folder\\test1")
print(os.path.isdir(filepath))
# True
指定のフォルダが存在する場合Trueが返ります。
ファイルだった場合や、存在しない場合はFalseが返ります。
<os.listdir>フォルダの中のファイルの詳細を調べる
import os
folderpath = ("C:\\test_folder\\test1")
print(os.listdir(folderpath))
# ['test2''test1.bmp','test1.txt']
指定のフォルダに存在するファイル、フォルダがリストに格納されます。
サブフォルダ内のデータは表示されません。
<os.walk>サブフォルダの中身まで調べる
import os
filepath = ("C:\\test_folder\\test1")
for i in os.walk(filepath):
print(i)
# ('C:\\test_folder\\test1', ['test2'], ['test1-A.txt', 'test1-B.txt'])
# ('C:\\test_folder\\test1\\test2', [], ['test2-A.txt', 'test2-B.txt'])
タプルが作成されます。
(フォルダパス、サブフォルダ名、ファイル名)の三要素で構成されています。
出力情報は適当。
例)ファイル名だけを抽出する
import os
filepath = ("C:\\test_folder")
for folder,subfolder,filename in os.walk(filepath):
print(filename)
# ['test1-A.txt', 'test1-B.txt']
# ['test2-A.txt', 'test2-B.txt']
folder,subfolder,filenameの三要素でfor文を回し、filenameのみをprintしています。
実際の利用時にはデータの加工が必要ですね。
まとめ
2.7と3.0で大きな違いはなさそう。
参考にしたページ