本サイトにはPRが含まれています

【Python】大量のフォルダを一括作成!ふつうにやったらめんどくさいけどパイソンなら!

プログラミング

私はパソコンでフォルダを作るという行為をおそらく毎日やっています。

そんなフォルダ作成について、、、

先日、というか今まで何度も、あるフォルダの中に 1月 から 12月 までのフォルダを作成することがありました。

これが地味にめんどいです、、、

私は windows を使っているので、

新しいフォルダを作成 ショートカット

Ctrl + Shift + N

で新しいフォルダーを作成してもいいのですが、それでも少しだけ面倒です。

そこで指定したフォルダに1月、2月、3月、 … 、12月とフォルダを自動で作成しました。

スポンサーリンク

Python を使う

自動でフォルダを作る方法はいろいろあるみたいです!

今回は簡単にできると噂されている python でやってみます。

os モジュール

パイソンにてフォルダを作ったり、削除したりするには os モジュールを利用します。

tkinter

フォルダの自動作成には直接関係ない部分ではありますが、対象のフォルダをダイアログ(エクスプローラー的なやつ)で指定するために tkinter というモジュールを使用してます。

ダイアログでダウンロードフォルダを選択

こんな感じのやつです。今回はダウンロードフォルダを選びます!

ソースコード

いきなりコード。

python
import os
import tkinter as tk
import tkinter.filedialog

def make_folder():
    root = tk.Tk()
    root.withdraw()
    target_dir = tkinter.filedialog.askdirectory()

    for i in range(12):
        # 新しく作るフォルダのパス
        new_dir = os.path.join(target_dir, str(i+1)+"月")

        # フォルダの存在確認をしてから作成
        if not os.path.isdir(new_dir):
            os.mkdir(new_dir)

def main():
    make_folder()

対象フォルダの指定

6行目から8行目で 1月 から 12月 のフォルダを作りたいフォルダを選択します。

7行目で tkinter の GUI を非表示にしています。。今は使わないので。。

8行目の askdirectory() でフォルダ選択のダイアログを呼び出し、選択したフォルダのパスを target_dir に格納しています。

変数名の target_dir の dir は directory (ディレクトリ) の意味です。フォルダとディレクトリはほぼ同じだと思ってください!

あまり使わない分、ディレクトリのほうがなんかカッコイイ感じがします。

フォルダの大量作成

ここから本題のフォルダ作成!! for 文で12回ぐるぐるまわします。

12行目で新たに作成するフォルダのパスが出来上がります。

今回の for 文の i は 0、1、 … 、11 なので、、フォルダ名にする時にはプラス1します!

最後に15行目の if 文で新たに作成しようとしているフォルダが既に存在していないかチェックして、存在していなければ、めでたく作成となります。

isdir 関数は引数に指定したパスをチェックして、そのディレクトリが存在していれば True、してなかったら False を返すやつです。

ここで存在確認をせずに実行して、もし存在していた場合には16行目の mkdir 関数でエラーが出ます。。

最後の main()

最後の18・19行目は実行するのには必要ないのですが、これがないと何故か web ページ上でのパイソンのハイライトがおかしくなってしまったので書いてます。関数名は main でなくてもなんでもOKっす。

highlight.js の問題なのか、ワードプレスの問題なのかは今の僕にはわかりません。。。

タブとかスペースの関係なのか???

分かる方がいらっしゃれば教えて欲しいです!

2022年7月17日 追記

解決しました!HTML で実際のコードを包んでいる code タグのさらに1つ上の pre タグの class に目的の言語名を追加したらいけました!

今回なら python を追加することで正しくハイライトされました。

この pre タグのクラスは手動で追加しなくても自動で code タグ内に書いたソースコードを元に自動で言語を判定しているようなのですが、今までハイライトがおかしくなっていた部分は pre タグの class に別の言語の名がありました。

私はいままで pre タグではなく code タグの class に言語判別名を書けばオッケーだと思っていましたが、どうやらダメだったようです。

● 今まで

<pre class="wp-block-code">
    <code class="python">
    ...
    </code>
</pre>

● 修正版

<pre class="wp-block-code python">
    <code>
    ...
    </code>
</pre>

実行してみます

プログラムを実行しダウンロードフォルダを選択しました!

12月までのフォルダを作成

しっかりと作成できています!!

ちなみに、、、10行目の range(12) を range(100) にしてやってみます。おそらく100月までできる。

100月までのフォルダを作成

しっかり100月までできています。これで1年が100月まである時空に異世界転生しても安心です。

python なら簡単に自動フォルダ作成ができました!

今回やった月ごとのフォルダ作成だけでなくていろいろ応用できそうです。

これで地獄のフォルダ作成から解放されます。

コメント

タイトルとURLをコピーしました