5

我在这里读到,建议使用和(至少对于基本任务)with open(filename)而不是使用对,并且使用.open(filename)filename.close()try

Q1:如果我的理解是正确的,正确的顺序是什么?

try:
  with open(filename) as f:
    do something, eg. match string

或者

with open(filename) as f:
  try:
    do something, eg. match string

Q2:如果我还想插入一些代码来弹出文件处理错误的弹出窗口,哪种情况更好?(对于找不到文件或其他东西)

4

1 回答 1

8

使您的try/except语句尽可能靠近异常的来源。

如果您没有捕获IOErrors,请将其放在with语句中。另一方面,如果是open()抛出异常,请将其放在语句周围with

如果with语句较长,或者您不想屏蔽语句套件中引发的相同异常,请先with执行open()调用:

try:
    fileobj = open(filename)
except IOError:
    print('File problems!')
else:
    with fileobj as f:
        # do something
于 2014-04-23T09:48:36.800 回答