我正在使用Pandas和Xlsxwriter分析一些数据,然后定期为其他用户创建Excel简单报表。该报告应始终被我导出的最后一个报告覆盖。另外,导出后,它会自动打开以快速查看。
我唯一的问题是,如果有人打开该文件(或者即使我正在使用它,我也必须承认发生),则得到[Errno 13]。
IOError: [Errno 13] Permission denied: '2320PLFY2018.xlsx'
因此,我只想在XLSXWRITER部分的末尾向该IOError添加一些错误处理,以便让我知道这一点,并给我机会关闭文件。从一个简单的尝试开始,只是给我一条错误消息。尝试了几次,但无法使其正常工作。这是一种尝试:
try:
writer.save()
os.startfile(company_code_choice + 'PLFY2018.xlsx')
except IOError as e:
print(e.errno)
也尝试了不指定错误类型的情况:
while True:
try:
writer.save()
os.startfile(company_code_choice + 'PLFY2018.xlsx')
break
except:
print "Close the file!"
我是创建代码的新手,如果这是一个明显的问题,我深表歉意...
我整个上午一直在搜寻,并阅读了其他一些问题,但无法在我的代码中使用。提前致谢-
最佳答案
我能想到的最好的事情可能是导致此错误的原因是,您在try
语句内调用的函数之一正在内部处理异常,从而使异常处理无效。
确保;确定:
try
块中手动引发异常,以确保通常可以处理异常。 为了说明我的意思:
while True:
sleep(1)
try:
raise Exception("my exception")
writer.save()
os.startfile(company_code_choice + 'PLFY2018.xlsx')
break
except Exception as e:
print ("Close the file: ", e)
您绝对应该捕获引发的异常,否则,您的代码有问题。尝试简单地检查一下,或者检查是什么原因阻止了异常(exception)行为的发生。如果您可以捕获引发的异常,则下次:
while True:
sleep(1)
try:
writer.save()
raise Exception("my exception")
os.startfile(company_code_choice + 'PLFY2018.xlsx')
break
except Exception as e:
print ("Close the file: ", e)
这样一来,您要么捕获引发的异常,这意味着
writer.save()
在自身内部不处理该异常,要么得到相同的错误,这意味着writer.save()
处理该异常。通过在代码的try
块中继续执行此过程,您必须能够确定哪个函数出了问题。那是我现在能想到的最好的事情。希望对您有所帮助。但是,如果我是对的,那么您只能找出错误的根源,但我不知道如何实现所需的行为。因此,也许您可以在文档中找到线索。
关于python - Python [Errno 13]-保存用户打开的文件时的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48461784/