Skip to content

Instantly share code, notes, and snippets.

@Day0Dreamer
Last active October 17, 2017 18:37
Show Gist options
  • Save Day0Dreamer/c84c3752cd5361cedb5b13ab3a9a7231 to your computer and use it in GitHub Desktop.
Save Day0Dreamer/c84c3752cd5361cedb5b13ab3a9a7231 to your computer and use it in GitHub Desktop.
Project folder generator(Python 3)
import json
from os import path
from os import walk
from os import mkdir
class Folder_gen(object):
def __init__(self):
self.config_name = 'config.cfg'
self.config = {}
if path.exists(self.config_name):
self.read_json()
def __call__(self, *args, **kwargs):
print(self.config.items())
def set_default_folder_structure(self):
self.config['Folders'] = ['Rename_me',
'Rename_me/c4d',
'Rename_me/mov',
'Rename_me/avi']
def set_projects_folder(self, project_folder=path.normpath(path.abspath('.'))):
self.config['Projects folder'] = project_folder.replace('\\', '/')
def folder_structure_read(self, folder='.'):
subfolders = [path.normpath(path.relpath(i[0])).replace('\\', '/') for i in walk(folder)][1:]
print(subfolders)
# self.config = json.dumps({'Folders': subfolders}, indent=1)
self.config['Folders'] = subfolders
def folder_structure_create(self, project_path=None):
if not project_path:
project_path = self.config.get('Projects folder')
folders = self.config.get('Folders')
if folders:
new_dirs = [path.abspath(path.join(project_path, i)) for i in folders]
for i in new_dirs:
try:
mkdir(i)
except FileExistsError:
print(i, 'already exists')
except FileNotFoundError:
print(i, 'is a wrong path, please check the projects folder')
else:
raise BaseException('Config file empty of missing')
def write_json(self):
with open(self.config_name, 'w') as configfile:
configfile.write(json.dumps(self.config, indent=1))
def read_json(self):
with open(self.config_name, 'r') as configfile:
self.config = json.load(configfile)
if __name__ == 'folder_gen.py':
fg = Folder_gen()
while True:
user_choice = input('''
1) Remember folder structure
2) Create folder structure in {}
3) Change the folder containing projects
4) Load example folder structure
5) Exit
'''.format(fg.config.get('Projects folder')))
if user_choice in set('12345'):
user_choice = int(user_choice)
else:
print('\tWrong number')
if user_choice == 1:
fg.folder_structure_read()
fg.set_projects_folder()
fg.write_json()
elif user_choice == 2:
fg.read_json()
fg.folder_structure_create()
elif user_choice == 3:
abs_dir = input('Enter path (default is current dir)')
if abs_dir == '':
abs_dir = path.abspath('.')
fg.read_json()
fg.set_projects_folder(abs_dir)
fg.write_json()
print('\tProjects folder has been set to:', fg.config.get('Projects folder'))
elif user_choice == 4:
fg.set_default_folder_structure()
fg.write_json()
elif user_choice == 5:
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment