python - Python [Errno 13]-保存用户打开的文件时的异常处理

标签 python pandas error-handling xlsxwriter errno

我正在使用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/

    相关文章:

    Python One-Shot、电平触发、边缘触发

    python - 子进程失效, `communicate()` 挂起

    python - 尝试为 Tensorflow 编译 XLA AOT 时出现链接错误

    python - 使用 sns 绘制 JIRA,如创建的 v/s 已解决

    .net - 如何抑制或忽略 SQL SELECT 语句中的错误

    php - PHP : @$_POST 中变量名前的“At”符号

    python - 如何打印列表中的元素(非重复)

    python - 如何将 json.loads 应用于 pandas df 中的每一行

    单页的php错误报告?

    python - 获取组开始和结束 pandas 的索引