반응형
파이썬에서 파일을 읽으려고 할 때 예외를 처리하는 좋은 방법은 무엇입니까?
파이썬으로 .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
, 다음 open
A의 포장되어야한다 try
. 호출이 경우 open
a의 헤더에 with
, 다음은 with
A의이어야 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
반응형
'programing' 카테고리의 다른 글
git : 권한 문제와 관련된 푸시 할 수 없음 (패커 풀기 오류) (0) | 2021.01.15 |
---|---|
C의 printf 함수 코드 (0) | 2021.01.15 |
Eclipse의 JUNIT 테스트 클래스-java.lang.ClassNotFoundException (0) | 2021.01.15 |
CORS 요청-쿠키가 전송되지 않는 이유는 무엇입니까? (0) | 2021.01.15 |
CSS : before 및 : first-child 결합 (0) | 2021.01.15 |