Использование Python для создания пустых папок в пользовательских каталогах

1

Я создал скрипт Python для создания новых папок в каталогах пользователей. Однако он работает хорошо, если программа запускается снова, то по какой-то причине она будет создавать пустые папки в корневом каталоге. В качестве примера

Корень - Дэйв

  • Джим

  • боб

После запуска программы

  • Дейв

---- Наука

---- Английский

---- Математика

  • Джим

---- Наука

---- Английский

---- Математика

  • боб

---- Наука

---- Английский

---- Математика

После того, как программа снова запустится (просто добавьте нового пользователя), это произойдет

  • Наука

  • английский

  • математика

  • Дейв

---- Наука

---- Английский

---- Математика

  • Джим

---- Наука

---- Английский

---- Математика

  • боб

---- Наука

---- Английский

---- Математика

Если программа снова запущена, она работает.

Любая помощь будет оценена по достоинству.

Ta

Код находится здесь:

import os

currentPath = os.getcwd()
folders = ["English","Science","Maths"]

directory_list = list()
for root, dirs, files in os.walk(currentPath, topdown=False):
    for name in dirs:
        directory_list.append(os.path.join(root, name))

        path = currentPath+"\\"+name

        for i in range(len(folders)):

            try:  
                os.makedirs(path+"/"+folders[i])
            except OSError:  
                print ("Creation of the directory %s failed" % path)
            else:  
                print ("Successfully created the directory %s " % path)
  • 0
    Вы должны убедиться, что при повторном запуске вы удалите предыдущие папки. ИЛИ вы должны проверить, что уже существует и что нового, добавьте только это! Прямо сейчас в вашем коде, когда вы снова запускаете новые значения, такие как «Наука», «Математика» с первого запуска выбирается и, следовательно, искаженная структура файла
  • 0
    Вам не нужен os.walk для поиска пользовательских каталогов: все они находятся в одной папке вместе. Сделайте прямое перечисление в этом, и вы избежите всех проблем с спуском в существующие папки (не только те, которые вы создали ранее).
Показать ещё 3 комментария
Теги:
folder
creation

1 ответ

0
Лучший ответ

Сначала вы должны проверить, существует ли каталог, прежде чем создавать новое имя с тем же именем.

import os

currentPath = os.getcwd()
folders = ["English","Science","Maths"]

directory_list = list()
for dir in os.listdir(currentPath):

    temp_path = currentPath+"\\"+dir

    if os.path.isdir(temp_path):
        for folder in folders:
            if not os.path.isdir(temp_path+"\\"+folder):
                new_folder = temp_path+"\\"+folder
                try:
                    os.makedirs(temp_path+"\\"+folder)
                except OSError:  
                    print ("Creation of the directory %s failed" % new_folder)
                else:  
                    print ("Successfully created the directory %s " % new_folder)

Мне пришлось переписать немного кода, но я тестировал это, и он работает!

Я думаю, что запись в path var давала непреднамеренное поведение, поэтому я переименовал переменную.

  • 0
    or else it could delete the old folder and everything in it. Это не правда. Вы не можете создать каталог, который уже существует. os.makedirs() поглотит ошибку ОС и продолжит работу.
  • 0
    обновил, спасибо
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню