0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

フォルダの作成法

Posted at

フォルダの作成法

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)

参考

[1] https://note.nkmk.me/python-os-mkdir-makedirs/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?