Я создал скрипт 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)
Сначала вы должны проверить, существует ли каталог, прежде чем создавать новое имя с тем же именем.
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 давала непреднамеренное поведение, поэтому я переименовал переменную.
or else it could delete the old folder and everything in it.
Это не правда. Вы не можете создать каталог, который уже существует. os.makedirs()
поглотит ошибку ОС и продолжит работу.
os.walk
для поиска пользовательских каталогов: все они находятся в одной папке вместе. Сделайте прямое перечисление в этом, и вы избежите всех проблем с спуском в существующие папки (не только те, которые вы создали ранее).