try문에서 계속 오류가 납니다.
조회수 647회
try:
filename = input("파일 이름을 입력하세요: ")
with open(filename, 'r') as f:
text = f.read().lower()
except FileNotFoundError:
print("파일이 없습니")
word = text.replace('!', ' ').split()
위와 같이 코드를 작성하면 없는 파일명을 입력할 때 마지막 코드에 UboundLocalError: local variable 'text' referenced before assignment 라는 에러가 뜹니다.
그래서 except 위치를 조정했더니
try:
filename = input("파일 이름을 입력하세요: ")
with open(filename, 'r') as f:
except FileNotFoundError:
print("파일이 없습니다.")
text = f.read().lower()
expected an indented block 이라는 에러가 계속 뜹니다. 제가 생각하기에는 with문 다음에 바로 except가 나와서 파일이 없으면 파일명을 입력하라는 문자열을 출력하고 다시 이름을 받는게 맞다고 생각하는데 무엇이 문제인지 모르겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
단순한문제입니다만 목적을 이해하기 어려운 코드를 작성했고 예외처리가 무엇인지 학습이 더 필요해보입니다.
첫번째. 'UboundLocalError: local variable 'text' referenced before assignment 라는 에러' 같은 경우는
text = f.read().lower()
를 호출하기전 예외가 발생해서 그렇습니다.word = text.replace('!', ' ').split()
text라는 변수를 할당하기도전에 참조를 하는 셈입니다.두번째. 예외가 발생하면 다음 라인을 무시하고 바로 except 절을 수행하는 것 입니다. 즉 아래와 같이 open 시 파일이 없다면
text = f.read().lower()
는 수행하지 않고print("파일이 없습니다.")
를 수행하고 끝납니다.try: filename = input("파일 이름을 입력하세요: ") with open(filename, 'r') as f: text = f.read().lower() except FileNotFoundError: print("파일이 없습니다.")
댓글 입력