programing

파이썬에서 파일을 읽으려고 할 때 예외를 처리하는 좋은 방법은 무엇입니까?

firstcheck 2021. 1. 15. 08:17
반응형

파이썬에서 파일을 읽으려고 할 때 예외를 처리하는 좋은 방법은 무엇입니까?


파이썬으로 .csv 파일을 읽고 싶습니다.

  • 파일이 존재하는지 모르겠습니다.
  • 내 현재 솔루션은 다음과 같습니다. 두 개의 개별 예외 테스트가 어색하게 나란히 있기 때문에 나에게 엉성한 느낌이 듭니다.

더 예쁜 방법이 있습니까?

import csv    
fName = "aFile.csv"

try:
    with open(fName, 'rb') as f:
        reader = csv.reader(f)
        for row in reader:
            pass #do stuff here

except IOError:
    print "Could not read file:", fName

질문받은 내용을 오해 한 것 같습니다. 다시 읽으면 Tim의 대답이 당신이 원하는 것 같습니다. 나 그냥하지만,이를 추가하자 : 당신이에서 예외를 잡을하려는 경우 open, 다음 openA의 포장되어야한다 try. 호출이 경우 opena의 헤더에 with, 다음은 withA의이어야 try예외를 잡을 수 있습니다. 그 주위에는 방법이 없습니다.

따라서 대답은 "팀의 방식"또는 "아니요, 올바르게하고 있습니다."입니다.


모든 댓글이 참조하는 이전의 도움이되지 않은 답변 :

import os

if os.path.exists(fName):
   with open(fName, 'rb') as f:
       try:
           # do stuff
       except : # whatever reader errors you care about
           # handle error


이것은 어떤가요:

try:
    f = open(fname, 'rb')
except IOError:
    print "Could not read file:", fname
    sys.exit()

with f:
    reader = csv.reader(f)
    for row in reader:
        pass #do stuff here

다음은 읽기 / 쓰기 예입니다. with 문은 예외 발생 여부에 관계없이 close () 문이 파일 객체에 의해 호출되도록합니다. http://effbot.org/zone/python-with-statement.htm

import sys

fIn = 'symbolsIn.csv'
fOut = 'symbolsOut.csv'

try:
   with open(fIn, 'r') as f:
      file_content = f.read()
      print "read file " + fIn
   if not file_content:
      print "no data in file " + fIn
      file_content = "name,phone,address\n"
   with open(fOut, 'w') as dest:
      dest.write(file_content)
      print "wrote file " + fOut
except IOError as e:
   print "I/O error({0}): {1}".format(e.errno, e.strerror)
except: #handle other exceptions such as attribute errors
   print "Unexpected error:", sys.exc_info()[0]
print "done"

@Josh의 예에 추가;

fName = [FILE TO OPEN]
if os.path.exists(fName):
    with open(fName, 'rb') as f:
        #add you code to handle the file contents here.
elif IOError:
    print "Unable to open file: "+str(fName)

이렇게하면 파일 열기를 시도 할 수 있지만 파일이 존재하지 않는 경우 (IOError가 발생하는 경우) 사용자에게 경고합니다!

ReferenceURL : https://stackoverflow.com/questions/5627425/what-is-a-good-way-to-handle-exceptions-when-trying-to-read-a-file-in-python

반응형