Использование Python Добавить 80 каталогов с 6 подкаталогами? - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь добавить 80 подкаталогов в данном каталоге.

Каждому каталогу нужны следующие подкаталоги:

app docs
chk shts
le docs
recon
set-up docs
timeline

У меня есть файл Excel, который я использую для основных каталоговэто работает для тех, но как мне добавить подкаталоги?

Код, который я использую для клиентских каталогов, выглядит следующим образом:

import os
import pyexcel as pe
import pyexcel_xlsx

client = 'LAM'
spath = r'c:\Users\Ryan *****\OneDrive - L******y \Desktop\clientStructure\Team \%s' %(client)
fpath = r"c:\Users\Ryan *****\OneDrive - L******y \Desktop\testtesttest.xlsx"
data = pe.get_array(file_name=fpath)
folders =[]
for i in data:
    folders.extend(i)

try:
    os.mkdir(os.path.join(spath))
except:
    for folder in folders:
        os.mkdir(os.path.join(spath, str(folder)))

print('Done')

1 Ответ

1 голос
/ 04 октября 2019

Так как часть pyexcel этого не имеет никакого отношения к проблеме, и есть много ненужных строк, я дам вам минимальный код, чтобы ответить на ваш вопрос, но вы должны включить его в свою собственную программу.

Во-первых, почему бы просто не прочитать данные из fpath в folders вместо использования data в качестве промежуточного?

Во-вторых, я не понимаю, почему вы 'создает folder только если spath уже существует, т.е. если os.mkdir() выдает ошибку. Python выполняет except только в том случае, если try выдает ошибку, поэтому вам придется дважды запустить эту программу, чтобы создать необходимую структуру каталогов.

В любом случае, вот мой минимальный воспроизводимый ответ:

import os

pdir = 'C:\\Users\\mRotten\\target_dir'
folders = ['parent_1', 'parent_2', 'parent_3']
subfs = ['sub_1', 'sub_2', 'sub_3']

for f in folders:

    fpath = os.path.join(pdir, f)

    try: os.mkdir(fpath)
    except FileExistsError: pass

    subds = [os.path.join(fpath, sf) for sf in subfs]

    for sd in subds:
        try: os.mkdir(sd)
        except FileExistsError: pass
...