Python新手在这里并且在我的代码中遇到了一些奇怪的行为。
我正在尝试将一些数据写入文件。在调用以下代码块之前,我将数据的长度打印为大约 50k。数据是我通过互联网获得的 pdf 文件。它是一个有效的pdf。
当我调用下面描述的函数 F() 时,我得到了在函数 F 中打印的异常消息,而不是在它失败的实际位置。
在下面的代码中,在函数 write_to_disk() 中,我看到了第二次打印,执行直接跳转到调用函数 F() 中的异常处理程序。我无法弄清楚为什么会这样。在磁盘上,我看到文件已创建,但大小为 0。
有些人可以看看下面的代码,并可能猜到会发生什么?如果我在 write_to_disk() 函数中捕获异常,它怎么可能完全跳出函数?
编辑:感谢 kobejohn,结果 excetion 对象没有 errno 变量。摆脱它使打印出现。但更大的问题仍然存在。我看到一个失败,却无法找出失败的原因。如何在此处获取错误消息?
def write_to_disk(self, pathToWrite, pdfFileData):
try:
print 'Here `1.1'
fd = open(pathToWrite, "w+")
print 'Here `2.1'
fd.write(pdfFileData)
print 'Here 3.1'
fd.close()
except Exception as e:
print 'file cannot be opened ' + pathToWrite + e.errno
这个函数又被另一个函数 F 调用,就像这样 -
def F(self, url):
pathWrite = get_path_to_use()
pdfData = get_pdf_data(url)
try:
writetodisk(pathToWrite, pdfData)
except Exception as e:
print 'Did I jump directly to here?' + e.errno
这是程序的输出。我不认为它会添加任何东西,因为我看不到任何用处。事实上,即使在 pdb 中运行它,我也会得到相同的输出。
Here `1.1
Here `2.1
Did I jump directly to here?