【Python3】業務・課題用フォルダ作成ツールを作成し効率化する
概要
決められた階層構造を指定されたディレクトリ(フォルダ)直下に作成する
効果
・時間の削減
・作成漏れなど手動で起こるミスを減らすことができる
・決められたルールによってディレクトリ構造を作成するため、集計が行いやすい
使用するライブラリ
- configparser
- os
- sys
各ライブラリの主な役割は下記
configparser : .iniファイルの読み取り
os : ファイルパスの連結、ディレクトリの作成
sys : スクリプト起動時の引数を取得
ディレクトリ構造
TaskDirectoryMaker/
├conf/
│ └ setting.ini
├test/
└taskdirectorymaker.py
使い方
①python taskdirectorymaker.py 課題名
例) python taskdirectorymaker.py test_task
②python taskdirectorymaker.py 作成親ディレクトリ 課題名
例) python taskdirectorymaker.py C:\Users test_task
設定ファイル(setting.ini)
[SETTINGS]セクションのparent_directoryに作成したい親ディレクトリを指定
[FOLDER]セクションに作成したい子ディレクトリを指定(実際に作成されるフォルダ名は右辺)
[FILE]セクションに作成したい子ディレクトリごとのファイル(複数の場合「,」区切り)を指定
[SETTINGS]
parent_directory=C:\SampleProject\TaskDirectoryMaker\test
[FOLDER]
design_document=設計
design_document_review=設計レビュー
code_review=コードレビュー
test_document=テスト
test_document_review=テストレビュー
[FILE]
design_document_review=メモ.txt,レビュー指摘.txt
code_review=メモ.txt,レビュー指摘.txt
test_document=メモ.txt
test_document_review=メモ.txt,レビュー指摘.txt
実装コード(taskdirectorymaker.py)
import sys
import os
import configparser
SETTING_KEY_NAME="SETTINGS"
FOLDER_KEY_NAME="FOLDER"
FILE_KEY_NAME="FILE"
CONF_FILE="conf/setting.ini"
def make_task(parent_dir=None,task_name="task"):
"""
課題フォルダの作成
既に課題フォルダが存在する場合は作成しない
"""
task_path = ""
conf_path = os.path.join(os.path.dirname(__file__),CONF_FILE)
config = configparser.ConfigParser()
config.read(conf_path,'UTF-8')
if parent_dir is None:
parent_dir = config[SETTING_KEY_NAME]["parent_directory"]
if os.path.exists(parent_dir) == False:
return
task_path = os.path.join(parent_dir,task_name)
if os.path.exists(task_path):
return
os.mkdir(task_path)
make_subdir(config,task_path)
def make_subdir(config,task_dir):
"""
サブディレクトリの作成
サブディレクトリに関連したファイルがある場合はそのファイルも作成する
"""
subdir_list = list(config[FOLDER_KEY_NAME].keys())
for subdir in subdir_list:
subdir_path = os.path.join(task_dir,config[FOLDER_KEY_NAME][subdir])
os.mkdir(subdir_path)
if subdir in config[FILE_KEY_NAME]:
file_list = config[FILE_KEY_NAME][subdir].split(",")
make_files(subdir_path,file_list)
def make_files(parent_dir,file_list):
"""
サブディレクトリ内のファイル作成
"""
for file_name in file_list :
file_path = os.path.join(parent_dir,file_name)
with open(file_path,"w") as f:
f.write("####自動生成####")
if __name__ == "__main__":
args = sys.argv
if len(args) == 1 or 2 < len(args):
print("Argments error")
elif len(args)==2:
make_task(task_name=args[1])
else:
make_task(parent_dir=args[1],task_name=args[2])