验证文件夹创建时出错(Python)

时间:2017-10-02 09:08:53

标签: python subprocess directory expanduser

我陷入了错误"在我的文件夹创建期间 首先,这是我正在使用的代码:

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()我想确认该文件夹确实存在,该目录是真实的。输出结果为TrueFalse

问题是:如果我在~中使用print()符号,则输出为False。如果我将完整路径放到文件夹中(例如:os.path.isdir('C:\\Users\\Bob\\Desktop\\FOLDER'),则输出为True

为什么会这样?即使我有一个False输出,真的会创建该文件夹吗?

1 个答案:

答案 0 :(得分:2)

在调用isdir:

时,您只是缺少expanduser方法
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