Вопрос:
Я пытаюсь автоматизировать создание структуры папок проекта со следующим:
..Data ..DataGPS ..DataTabular ..DataWorking ..Documents ..DocumentsDocumentation ..DocumentsPics_Graphics ..Products
И, усложняя вещи, это то, с чем я пришел… что… работает… но, конечно, есть способ просто включить мою иерархию в список и пропустить ее, сохраняя при этом “if exist skip ” состояние? Я просмотрел файл https://codereview.stackexchange.com/questions/28715/script-for-creating-a-hairsp; который имеет аналогичный результат, но я не могу распутать предоставленный список в этом случае, который основан на счетчике.
import os import errno data = ‘C://temp//Pro_Folder_Structure//Data’ try: os.makedirs(data) except OSError as exception: if exception.errno != errno.EEXIST: raise else: print («nBE CAREFUL! Directory %s already exists.» % data) datagps = ‘C://temp//Pro_Folder_Structure//Data//GPS’ try: os.makedirs(datagps) except OSError as exception: if exception.errno != errno.EEXIST: raise else: print («nBE CAREFUL! Directory %s already exists.» % datagps) dataworking = ‘C://temp//Pro_Folder_Structure//Data//Working’ try: os.makedirs(dataworking) except OSError as exception: if exception.errno != errno.EEXIST: raise else: print («nBE CAREFUL! Directory %s already exists.» % dataworking) datatab = ‘C://temp//Pro_Folder_Structure//Data//Tabular’ try: os.makedirs(datatab) except OSError as exception: if exception.errno != errno.EEXIST: raise else: print («nBE CAREFUL! Directory %s already exists.» % datatab) docs = ‘C://temp//Pro_Folder_Structure//Documents’ try: os.makedirs(docs) except OSError as exception: if exception.errno != errno.EEXIST: raise else: print («nBE CAREFUL! Directory %s already exists.» % docs) document = ‘C://temp//Pro_Folder_Structure//Documents//Documentation’ try: os.makedirs(document) except OSError as exception: if exception.errno != errno.EEXIST: raise else: print («nBE CAREFUL! Directory %s already exists.» % document) pics = ‘C://temp//Pro_Folder_Structure//Documents//Pics_Graphics’ try: os.makedirs(pics) except OSError as exception: if exception.errno != errno.EEXIST: raise else: print («nBE CAREFUL! Directory %s already exists.» % pics) prod = ‘C://temp//Pro_Folder_Structure//Products’ try: os.makedirs(prod) except OSError as exception: if exception.errno != errno.EEXIST: raise else: print («nBE CAREFUL! Directory %s already exists.» % prod) Лучший ответ:
Вы можете использовать цикл for. В зависимости от того, насколько глубоки ваши каталоги и по соображениям практичности, вы также можете использовать вложенный цикл.
Таким образом, вы можете просто сделать:
directories = [‘Data’,’GPS’,’Data//GPS’,….,’Products’] basedirectory = ‘C://temp//Pro_Folder_Structure//’ for (i in range (len (directories)): newDir = basedirectory + directories[i] try: os.makedirs(newDir) except OSError as exception: if exception.errno != errno.EEXIST: raise else: print («nBE CAREFUL! Directory %s already exists.» % newDir)