在python 3.4中打开文件的最安全的方法

时间:2014-08-12 20:42:15

标签: python file

我期待以下内容可行,但PyDev返回错误:

try fh = open(myFile):
    logging.info("success")
except Exception as e:
    logging.critical("failed because:")
    logging.critical(e)

给出

Encountered "fh" at line 237, column 5. Was expecting:     ":"... 

我环顾四周,无法找到一种安全的方法来打开文件句柄,以便在Python 3.4中阅读并正确报告错误。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

你错放了:;它直接在try之后出现;最好将它放在自己的单独一行:

try:
    fh = open(myFile)
    logging.info("success")
except Exception as e:
    logging.critical("failed because:")
    logging.critical(e)

您在:来电之后放置了open()

您可以告诉e自动获取异常,而不是将logging作为单独的参数传递:

try:
    fh = open(myFile)
    logging.info("success")
except Exception:
    logging.critical("failed because:", exc_info=True)

并且日志中将包含完整的回溯。这就是logging.exception() function的作用;它会在logging.error()设置为true的情况下调用exc_info,在日志级别ERROR生成一条消息并加上追溯。