【1年分のフォルダを作りたい】
こんにちは咲矢です。
今回はpythonで1年分のフォルダを一括で作成するプログラムを紹介したいと思います。
例えば
- エクセル形式で作った集計データのファイルを日付ごとに分けて保存する必要がある
- 日々の動画作成の素材を日付ごとに分けて管理したい
- 仕事中に突然「一ヶ月分のフォルダを作って」と頼まれた
みなさんはそんな経験ありませんか?
そのような場合に一つ一つ名前を付けてフォルダを作るのは手間がかかると思います。
一括でフォルダを作れたら楽ですよね。
浮いた時間でさらに作業することもできます。
そのような要望を叶えるpythonプログラムです。
■誰でも簡単にフォルダ作成
1ヶ月が31日までない月やうるう年はどうするの?
という疑問もあるかもしれませんが、問題ありません。
現実のカレンダー通りに作成してくれます。
Pythonのコードとかよくわからないという方でも
Pythonの実行環境さえあれば、ソースコードをコピーして「.py」形式で保存していただき、そのまま実行するだけでフォルダを作成してくれるので大丈夫です。
Pythonのインストールについては記事のリンクを貼っておきますのでどうぞ。
序盤の「■Pythonの導入方法」というところまで見ていただくだけでインストールできます
【入門】Pythonを始めるには – 初心者向け
■機能
機能はシンプルで、プログラムを実行するとコマンドライン上で作成したい年を聞かれるので、西暦で入力して実行すると月別に日付ごとのフォルダを作成するというものです。
具体的にはpythonを実行したカレントフォルダ直下に
2020───2020-01───2020-01-01
│ ├────2020-01-02
│ ├────2020-01-03
│ ├────2020-01-04
│ ├────2020-01-05
│ ├────
│
├─────2020-02── 2020-02-01
│ ├────2020-02-02
といった感じで
年・月・日を階層で分けてフォルダを作るという機能です。
■ソースコード
テキストエディタなどにコピペしてご利用ください
コードはコチラ↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import os import datetime #コンソールで作成する年の入力を受け付ける y = input('作成するフォルダの"年"を"半角数字"で入力してください:') #ユーザーからの入力が正しければフォルダを作成する try: #ユーザーからの入力を数値に変換して作成日の初日と最終日を取得 dt_y = int(y) first_day = datetime.date(dt_y,1,1) next_year_first_day = datetime.date((dt_y)+1,1,1) #作成するフォルダの日付を格納する変数を定義 day = first_day #フォルダの作成を1年分繰り返す while day < next_year_first_day: #日付からフォルダを作成するためのパス用文字列を取得 dt_m = str(day.month) dt_d = str(day.day) path = f'./{dt_y}/{dt_y}-{dt_m}/{dt_y}-{dt_m}-{dt_d}' #カレントフォルダ直下に再帰的にフォルダを作成する os.makedirs(path,exist_ok=True) #日付に1日加算して次に作成するフォルダの日付を取得 day += datetime.timedelta(days=1) #フォルダを作成したらメッセージを返して終了する print('') print('-----------------------------------------------------') print(f'{dt_y}年分のフォルダを作成しました') print('') #年の入力が正しくない場合エラーを返す except Exception as e: print('') print(e) print('エラー: "年"を正しく入力してください') print('') |
■まとめ
日々の生産性を上げるためにもフォルダ作成作業から解放されてみませんか?
好みに合わせて日付の形式を変えたり(ハイフンなしなど)
フォルダを作成する場所を自分の環境に合わせて指定するなど
改良してみるのもいいと思います。
ソースコードを公開してあるのでよろしかったら活用してみて下さい。
ここまでご覧いただきありがとうございました。
コメント