2014-04-23 8 views
5

에 내가 대신 (적어도 기본 작업)하고도 try를 사용하는 것이 좋습니다 그 한 쌍 open(filename)filename.close()를 사용하는 with open(filename)를 사용하는 것이 좋습니다 것을 여기에서 읽었다.파이썬

1 내 이해가 정확하다면, 적절한 순서는 무엇입니까?

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

또는

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

Q2 :이 파일은 오류를 처리하기위한 팝업을 가지고 몇 가지 코드를 삽입하는 것이 원하는 경우 더 나은 경우? (파일을 찾을 수 없거나 무엇인가)

답변

8

try/except 문은 예외 소스에 최대한 가깝게 유지하십시오.

IOError을 잡지 않으려면 with 문 안에 넣으십시오. 반대로 open()이 던져지는 예외 인 경우 with 문으로 두십시오.

try: 
    fileobj = open(filename) 
except IOError: 
    print('File problems!') 
else: 
    with fileobj as f: 
     # do something 
:

with 문이 이상하거나 with 문 스위트에서 제기되고 같은 예외를 마스크하지 않으려면 open() 전화 을 실행