フォルダの作成法
pythonにおけるフォルダの作成法は,os.mkdir()
とos.mkdirs()
の2種類があります.
例えば,code.pyの実行によりdatasetフォルダ構造を作成したいとします.
実行前:
- temp
- code.py
実行後:
- temp
- code.py
- dataset
- dog
- cat
その場合,os.mkdir()
とos.midirs()
で少々コードに違いがあるので,以下で説明します.
os.mkdir()
新しいフォルダを1つ作成することができる関数です.
今回のように,フォルダ内にフォルダを作成する場合は,上階層のフォルダを先に作成しないと下階層のフォルダを作成することができません.
作成先のフォルダが既に存在している場合,エラーが出力されます.
# code.py
import os
def main():
os.mkdir('./dataset')
os.mkdir('./dataset/dog')
os.mkdir('./dataset/cat')
if __name__ == '__main__':
main()
os.mkdirs()
新しいフォルダを再帰的に作成することができる関数です.
今回のように,フォルダ内にフォルダを作成する場合は,上階層のフォルダをわざわざ作成しなくても下階層のみの指定により上階層のフォルダは自動的に作成されます.
作成先のフォルダが既に存在している場合,エラーが出力されます.
# code.py
import os
def main():
os.mkdirs('./dataset/dog')
os.mkdirs('./dataset/cat')
if __name__ == '__main__':
main()
各関数を比較した際のメリット,デメリット(経験談)
os.mkdir()
メリット
- 1つずつフォルダを作成できるため,コード作成中に構造が確認しやすいです.
デメリット
- フォルダ内に複数フォルダを持つデータ構造を作成する場合は,コードが複雑になることがあります.
os.mkdirs()
メリット
- 下階層のみの指定でデータ構造を作成できるため,コード行数を少なくすることができます.
デメリット
- コード作成中にデータ構造が確認しにくいことがあります.
備考
プログラム効率は良くないかもしれませんが,見やすさ・理解重視で以下のコードを作ってみました.もしよければ参考にしていただければと思います.
import os
# フォルダを作成する関数(フォルダが既に存在してる場合は作成しない)
def create_directory(folder_path):
if not os.path.exists(folder_path):
os.mkdir(folder_path)
else:
print('フォルダが既に存在しているため作成不可:' + folder_path)