Py: создать иерархию папок с вложенными папками - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь автоматизировать создание структуры папок проекта с помощью следующего:

..\Data
..\Data\GPS
..\Data\Tabular
..\Data\Working
..\Documents
..\Documents\Documentation
..\Documents\Pics_Graphics
..\Products

И, из-за усложнения вещей, это то, с чем я пришел ... что ... работает.... но, безусловно, есть способ просто включить мою иерархию в качестве списка и перебрать ее, сохраняя условие "пропустить если существует"?Я посмотрел на https://codereview.stackexchange.com/questions/28715/script-for-creating-a-hierarchy-of-directories?, который имеет аналогичный результат, но я не могу распутать предоставленный список в этом случае, который основан на счетчике.

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) 

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете использовать цикл for.В зависимости от того, насколько глубоки ваши каталоги, и по соображениям практичности вы можете также использовать вложенный цикл 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)
...