Ошибка при проверке создания папки (Python)

Я застрял в "ошибке" во время создания моей папки. Прежде всего, это код, который я использую:

import os
import errno
import subprocess

try:
    folder = os.makedirs(os.path.expanduser('~\\Desktop\\FOLDER'))
except OSError as e:
    if e.errno != errno.EEXIST:
        raise
print(os.path.isdir('~\\Desktop\\FOLDER'), '- FOLDER CREATED')

Итак, код делает следующее:

  • используя os.makedirs(), он создает новую папку на рабочем столе. Я хочу создать папку, которая использует кросс-платформенный путь, поэтому я использую символ ~

  • используя print(), я хочу убедиться, что папка действительно существует, что каталог настоящий. Результатом этого является True или False.

Проблема в том, что если я использую символ ~ в print(), вывод будет False. Если я укажу полный путь к папке (например: os.path.isdir('C:\\Users\\Bob\\Desktop\\FOLDER'), вывод будет True.

Почему это происходит? Папка действительно создается, даже если у меня есть вывод False?


person lucians    schedule 02.10.2017    source источник
comment
stackoverflow.com/questions/7403918/   -  person Harry    schedule 02.10.2017
comment
Было бы лучше, если бы вы просто создали переменную для хранения расширенного пути и использовали ее там, где это необходимо: path = os.path.expanduser('~\\Desktop\\Folder'). Затем используйте path в качестве аргумента для os.makedirs() и os.path.isdir(). Это помогает уменьшить количество ошибок, подобных этой.   -  person John Szakmeister    schedule 02.10.2017
comment
Я пытался это сделать, но выдает ошибку... Сейчас попробую еще раз. Спасибо, кстати. Кроме того, проблема в том, что у меня есть несколько вложенных папок, более сложных, чем одна с (конкатенадными) переменными в пути.   -  person lucians    schedule 02.10.2017


Ответы (1)


Вам просто не хватает метода expanduser при вызове isdir:

print(os.path.isdir(os.path.expanduser('~\\Desktop\\FOLDER')), '- FOLDER CREATED')

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

Вот более чистая реализация:

try:
    dirpath = os.path.expanduser('~\\Desktop\\FOLDER')
    os.makedirs(dirpath)
    print dirpath, "creation successful"
except OSError as e:
    print dirpath, "creation failed"
    if e.errno != errno.EEXIST:
        raise
person Daniel Trugman    schedule 02.10.2017