2014-02-20 2 views
0

Я хочу запустить скрипт python, который удаляет выходной каталог, если он существует, а затем создает его. Если он не существует, он просто создает его. Код ниже:директория вывода python не создается

if os.path.exists(out_dir): 
    shutil.rmtree(out_dir) 
    os.makedirs(out_dir) 
else: 
    os.makedirs(out_dir) 

Однако, если выходной каталог уже существует, когда я запускаю этот код, он выдает ошибку:

WindowsError: [Error 183] Cannot create a file when that file already exists:

Почему это не работает?

ответ

1

Возможно, вместо этого используется os.path.isdir()? os.path.exists() может быть Истиной, если в каталоге есть файл с тем же именем, что и папка

+0

Спасибо! Это было полезно – user308827

1

В корпусе условия if это может быть так, что shutil.rmtree (out_dir) не удалось удалить существующую папку, а в следующей строке вы пытаетесь создать новый каталог с помощью os.makedirs (out_dir).

1

rmtree должно работать.

Попробуйте вместо

os.rmdir (os.path.join (корень, имя))

Обратите внимание, что rmtree потерпит неудачу, если есть файлы только для чтения.

1
try: 
    os.makedirs(out_dir) 
except OSError: 
    shutil.rmtree(out_dir) 
    os.makedirs(out_dir) 

makedirs Вызывает исключение ошибки, если каталог листьев уже существует или не может быть создан.

Смежные вопросы