【问题标题】:Error when verifying folder creation (Python)验证文件夹创建时出错(Python)
【发布时间】:2018-03-13 08:27:22
【问题描述】:

我在创建文件夹时遇到“错误”。 首先,这是我正在使用的代码:

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 输出,该文件夹是否真的创建了?

【问题讨论】:

  • 如果您只是创建一个变量来存储扩展路径并在必要时使用它会更好:path = os.path.expanduser('~\\Desktop\\Folder')。然后使用path 作为os.makedirs()os.path.isdir() 的参数。这有助于减少此类错误。
  • 我试过这样做,但它给了我一个错误......现在再试一次。谢谢顺便说一句。另外,问题是我有一些嵌套文件夹,比路径中包含(连接)变量的文件夹更复杂。

标签: python subprocess directory expanduser


【解决方案1】:

你只是在调用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    相关资源
    最近更新 更多