麻烦异常在Python中

时间:2018-02-19 23:12:57

标签: python python-3.x exception

我正在学习python中的异常,我遇到了一些代码问题。以下代码是:

try:
    txt = open("C:\\Users\\Draco\\OneDrive\\Documents\\textfile.txt","r")
    try:
        txt.write("This is a test. Normal service will shortly resume!")
    finally:
        print("Content written to file successfully. Have a nice day.")
        txt.close()
except IOError:
    print("Error: unable to write the file. Check permissions")

现在,当我执行代码时,我将以下两行: 内容写入文件成功。祝你今天愉快。 错误:无法写入文件。检查权限

我遇到的问题是因为错误,在这种情况下是" r"这应该是" w"我应该只收到消息错误:无法写入文件。检查权限。但我得到错误和成功消息,我不确定为什么

2 个答案:

答案 0 :(得分:1)

我会一个一个地为你分解。

  1. 尝试阻止打开

    try:
    
  2. 以读取权限打开文件。

    txt = open("C:\\Users\\Draco\\OneDrive\\Documents\\textfile.txt","r")
    
  3. 尝试打开块,写入自己写入只读文件对象后发生异常。

    try:
        txt.write("This is a test. Normal service will shortly resume!")
    
  4. 由于你有一个内部的try块,嵌套的finally是第一个执行的块。

    finally:
    
  5. 即使文件写入失败也会成功打印。

    print("Content written to file successfully. Have a nice day.")
    
  6. 关闭文件,工作正常

    txt.close()
    
  7. 异常处理程序,现在处理异常。

    except IOError:
        print("Error: unable to write the file. Check permissions")
    

答案 1 :(得分:0)

finally always executes

  

在离开try语句之前总是执行finally子句,   是否发生了例外。

您正在看到的过程:

  1. 您的脚本不会在txt = open(loc, 'r')上出错,因为在舞台上它不是 写任何数据。
  2. 当它移至txt.write时,会出现错误并移至finally, 由于上面给出的原因。
  3. 由于您遇到了IOError,您还会看到该消息 在except条款中定义。