ゼロからの業務効率化ノート

30代未経験から始まったノーコード&Pythonチャレンジ

初心者でも簡単!Pythonで複数のフォルダを同時に作成するテクニック


ぬこ将軍です🐈

プログラミング言語Pythonを使うようになってから、部署内でもそれが知られているのでPythonに関する相談がたまに来るようになりました。
みんな困りごとが多種多様なのですぐに解決できないものもありますが、自分自身の更なるスキルアップのきっかけになるので嬉しい面もあります。


今回は「Pythonで複数のフォルダを同時に作成するテクニック」について書こうかと思います。
「何か新しいプロジェクトなどを始める際に、保存するファイルがめちゃくちゃにならないように複数のフォルダをあらかじめ作っておきたい!」と思ったことはありませんか?
1つ1つ、フォルダを新規作成して名前変更して・・・なんてことをしているのは正直面倒ですよね。。。
そんな状況を打破するテクニックをこの記事で紹介しようと思います!

  • プログラミング言語Pythonを始めたばかりで、どんどん知識を吸収したい!
  • 面倒なフォルダの作成作業を簡単かつ素早くかつ複数同時に完了したい!

そんな方々の参考になりましたら幸いです。面倒な作業も、pythonなら効率化できる可能性があります!


Pythonで複数のフォルダを同時に作成するテクニック

今回は「新しいプロジェクトが立ち上がり、プロジェクト名フォルダのサブフォルダとして下記画像の10種のフォルダを同時に作成する」という状況を想定します。

プロジェクト名は「テスト」とし、テストフォルダの下に10個のサブフォルダが出来るイメージです。1つ1つ新規フォルダ作成コマンドでやっていたら時間かかって面倒ですよね。

そんな状況を変え、同時にかつ簡単に複数フォルダを作成するコードが以下です。

import os

theme = input("テーマ名を入力ください。")
file_path = "./" + theme
os.mkdir(file_path)

with open("サブフォルダリスト.txt", "r", encoding='utf8') as f:
 subfolders = f.read().split("\n")
 print(subfolders)

for i in subfolders:
 os.mkdir(file_path+ "/" + i)

次に部分的に詳細を説明します。

親フォルダを作成する

import os

theme = input("テーマ名を入力ください。")
file_path = "./" + theme
os.mkdir(file_path)

ここで親フォルダとは、プロジェクトフォルダのことを指しています。今回はプロジェクト名を「テスト」、つまり親フォルダ名はテストとします。

親フォルダを作成前に、まずは【import os】でフォルダ作成に必要なライブラリosをインポートします。
次に【theme = input("テーマ名を入力ください。")】でフォルダ名を任意入力します。本来はテーマ名(プロジェクト名)ですが、今回はテストと入力します。

最後に【os.mkdir(file_path)】で親フォルダを作成するのですが、ファイルパスをfile_pathという変数に代入しています。
その際に【file_path = "./" + theme】という感じで、カレントディレクトリの直下に親フォルダを作成するようにしました。
ちなみに相対パスでファイルパスを指定していますが、カレントディレクトリや相対パスについては下記のサイトを参照ください。
Pythonのパス(相対パス・絶対パス)の使い方を解説 – 本町オープンソースラボ -大阪でのIT勉強会多数開催!大阪本町のエンジニア向けコミュニティ-

ちなみにjupyternotebookでpythonのコードを書いている場合は、jupyternotebookのショートカットのある場所がカレントディレクトリになるようです(自分のPCの場合ですが)。

サブフォルダを作成する

with open("サブフォルダリスト.txt", "r", encoding='utf8') as f:
 subfolders = f.read().split("\n")
 print(subfolders)

for i in subfolders:
 os.mkdir(file_path+ "/" + i)

サブフォルダは今回、テキストファイルに記載した10種のフォルダです。
今回紹介するテクニックでは、まずあらかじめ作成したいサブフォルダをまとめたテキストファイルをカレントディレクトリに準備しましょう。

今回のコードではfor文を使っていますが、「繰り返し処理でテキストファイル内に書かれた名前のフォルダを1つずつ作成する」というイメージです。

with open("サブフォルダリスト.txt", "r", encoding='utf8') as f:
 subfolders = f.read().split("\n")
 print(subfolders)

の部分ではまず、【with open("サブフォルダリスト.txt", "r", encoding='utf8') as f:】でファイルオブジェクトfを作成してテキストファイル内の文章を読み込みます。
そして【subfolders = f.read().split("\n")】で文章を改行部分で分割し、['01 計画書', '02 見積書', '03 請求書', '04 契約書', '05 製品図面', '06 治具図面', '07 調査資料', '08 報告資料', '09 評価結果データ', '10 議事録']という形式のリストに返しています。
リストに返しているのはfor文で1つずつ要素を取り出したいからです。ちなみにprint関数を使っているのは出力結果を確認したいだけなので、print関数は必須ではありません。

そして最後に、

for i in subfolders:
 os.mkdir(file_path+ "/" + i)

とすることで、親フォルダの直下に10個のサブフォルダを作成することができました。

以上が、同時にかつ簡単に複数フォルダを作成するコードです。

Pythonで複数のフォルダを同時に作成するテクニックまとめ

今回のテクニックをまとめると以下の通りです。

  1. 親フォルダを作成する
  2. サブフォルダのリストを書いたテキストファイルを準備する
  3. サブフォルダを作成する

もう一度、全体のコードも載せておきます。

import os

theme = input("テーマ名を入力ください。")
file_path = "./" + theme
os.mkdir(file_path)

with open("サブフォルダリスト.txt", "r", encoding='utf8') as f:
 subfolders = f.read().split("\n")
 print(subfolders)

for i in subfolders:
 os.mkdir(file_path+ "/" + i)

これができれば、新しいプロジェクトが始まった時の準備が少し楽になります。
面倒なフォルダの作成作業を簡単かつ素早くかつ複数同時に完了させ、業務効率化を目指しましょう!


面倒なpdfファイルの結合をPythonで解決!

nukoshogun.hatenablog.com