- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试了解 Windows 8 上 Python 2.7.6 的异常。
这是我正在测试的代码,旨在在 My_New_Dir
中创建一个新目录。如果目录已经存在,我想删除整个目录及其内容,然后创建一个新目录。
import os
dir = 'My_New_Dir'
try:
os.mkdir(dir)
except IOError as e:
print 'exception thrown'
shutil.rmtree(dir)
os.mkdir(dir)
问题是,永远不会抛出异常。如果目录尚不存在,代码可以正常工作,但如果目录确实存在,则会出现错误:
WindowsError: [Error 183] Cannot create a file when that file already exists: 'My_New_Dir'
但是根据 os.mkdir() 的 Python 文档,
If the directory already exists, OSError is raised.
那么为什么抛出的是 Windows 错误,而不是 Python 异常?
最佳答案
WindowsError
是 OSError
的子类。来自exceptions documentation :
Raised when a Windows-specific error occurs or when the error number does not correspond to an
errno
value. Thewinerror
andstrerror
values are created from the return values of theGetLastError()
andFormatMessage()
functions from the Windows Platform API. Theerrno
value maps thewinerror
value to correspondingerrno.h
values. This is a subclass ofOSError
.
然而,您正试图捕获 IOError
,不是 WindowsError
的父类;因此,它不足以捕获 OSError
或 WindowsError
。
更改您的代码以在此处使用正确的异常:
try:
os.mkdir(dir)
except OSError as e:
或者使用WindowsError
;这会将您的代码绑定(bind)到 Windows 平台。
关于Python:获取 WindowsError 而不是 IOError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22027508/
我是初学者。在这里学习。 一段代码抛出 WindowsError。我捕捉到它并将其重命名为 exception。 我通过dir(exception)、type(exception)、print(exc
我已经创建了一个临时文件。 向创建的文件添加了一些数据。 保存了它,然后试图删除它。 但我遇到了 WindowsError。编辑后我关闭了文件。如何检查哪个其他进程正在访问该文件。 C:\Docume
我正在学习 Python(使用 Python 3.2)并且一直在遵循一些手册。其中之一,我被要求将当前目录更改为包含我被要求制作并放置在那里的特定文件的目录。我一直遇到以下错误: >>> import
Python 内置了通用 OSError 的异常。 , 它有 WindowsError它继承自 OSError。文档解释说 WindowsError 是 Raised when a Windows-s
使用Python的rename()函数重命名文件时出现问题,提示 WindowsError: [Error 2] 错误,最初代码如下: ?
这个简短的函数只是获取存储设备的可用空间,但是在运行代码时出现上述错误。 功能是: def disk_space1(drive): freespace = ctypes.c_ulonglong
这是我的问题的一个简化示例: import os import sqlite3 with sqlite3.connect('test.db.temp') as db: db.executesc
关于 Windows 上 Python 的快速问题。我有一个编译程序的脚本(使用安装规则),然后通过网络将构建产品移动到远程目标。 但是,我不断收到 WindowsError 5 Access Den
我正在尝试了解 Windows 8 上 Python 2.7.6 的异常。 这是我正在测试的代码,旨在在 My_New_Dir 中创建一个新目录。如果目录已经存在,我想删除整个目录及其内容,然后创建一
我在使用Scrapy的FifoDiskQueue时遇到了这个问题。在 Windows 中,FifoDiskQueue 将导致目录和文件由一个文件描述符创建并由另一个文件描述符使用(如果队列中没有更多消
我正在使用 killableprocess 包(建立在子进程之上)来运行进程每当我在脚本中运行“killableprocess.Popen(command)”这段代码时,我都会收到以下错误: File
我正在尝试在 QGIS 上开发 python 插件,并且我正在尝试使用子进程执行二进制程序: program = os.path.join(self.tranusConf.tranusBinPath,
setup.py from distutils.core import setup import py2exe setup(console=['program.py']) 错误 Traceback (
在我的程序中,我有一个函数 runScript(): def runScript(): subprocess.call(['echo', 'hello']) 我在 Python 文档中看到过许多类似的
在 Windows 上,当我尝试创建以下文件夹时: os.mkdir('H:\\__ Photos\\____Photos to be sorted\\[ Photo sorting proc
我正在尝试使用 Python 的 ctypes 来处理 DLL,但是当我尝试调用作为指向另一个函数的指针传递的函数时,我偶尔会遇到问题。 一点背景...我正在尝试使用 Dokan 构建用户空间文件系统
我正在尝试使用 Py2exe 构建我的独立可执行文件。我导入了 Pmw 类。当我运行 stanalone 可执行文件时,出现此错误: Traceback (most recent call last)
我在绘制 VBO 时遇到 PyOpenGL 函数 glDrawArrays() 问题。我有一个对象(类)ContactGeometry,我使用方法 create_VBO() 创建 VBO 并使用方法
我一直无法让 Python C API 给我错误。 背景: 我一直在使用 ctypes 运行 native 代码 (C++) 一段时间,但直到现在我还没有真正用 Python C 做过任何具体的事情应
运行 Windows 7 和 Python 2.7.8,使用 RotatingFileHandler 进行日志记录,并使用 subprocess.Popen 使得 RotatingFileHandle
我是一名优秀的程序员,十分优秀!