수강항목
- 예외처리
- 텍스트
1.예외처리
- 예외란, 문법적인 문제는 없으나 실행 중 발생하는 예상하지 못한 문제

[출처이미지]제로베이스 데이터 취업스클
파이썬
○ ZeroDivisionErro
def add(n1,n2):
print(n1+n2)
def div(n1,n2):
print(n1/n2)
fn = int(input("input firstNum : "))
sn = int(input("input secontNum : "))
add(fn ,sn)
div(fn,sn)
입력값이 0일 경우

○ ValueError
print(int("hello"))
입력값이 데이터 타입이 안맞을 경우

○IndexError
list1 = [2,3,4,6,7]
print(list1[6])
인덱스에 맞지 않게 출력 할 경우

try~except~else
- ~else는 예외가 발생하지 않은 경우 실행하는 구문이다.
nums = []
n = 1
while n <6 :
try:
num = int(input("input number : "))
except:
print("예외 발생")
continue
else:
if num % 2 == 0:
nums.append(num)
n+=1
else:
print("홀수 입니다." , end="")
print("다시 입력하세요.")
continue
print(f"nums : {nums}")
- 정수가 아닌 다른 타입에 데이터가 입력이 되면 Value에러가 발생하게 된다.
- try 구간에서 에러가 안나고 정상적으로 진행 하고 except이 안된다면 else 부분이 실행된다.
finally
try:
inputData = input("input number :")
numInt = int(inputData)
except:
print("exception raise !!")
print("not number")
numInt = 0
else:
if numInt % 2 ==0:
print("inputData is even number!!")
else:
print("inputData is odd number")
finally:
print(f"inputData : {inputData}")
- finally는 항상 실행 된다.
raise
def divCalculatior(n1,n2):
if n2 != 0:
print(f"{n1}/ {n2} = {n1 / n2}")
else:
raise Exception("0으로 나눌 수 없습니다.")
num1 = int(input("input num1 : "))
num2 = int(input("input num2 : "))
divCalculatior(num1 , num2)
print(f"Exception : {e}")

- raise Exception()으로 에러가 나올 떄 문구를 출력 하게 만들어준다. (에러생성)
- 해당 에러를 예외처리하기 위해서 try ~ except 을 사용한다.
- 해당 에러에 출력을 보기위해 except Exception as e: 로 하여 출력해준다.
2. 텍스트

텍스트 쓰기
import time
lt = time.localtime()
dateStr = '[' + str(lt.tm_year) + '년 ' + \
str(lt.tm_mon) + "월 " +\
str(lt.tm_mday) + "일"
todaySchedule = input("오늘 일정")
file = open("C:/PythonEX/PythonText/test2.txt", 'w')
file.write(dateStr + todaySchedule)
file.close()


텍스트 읽기
file = open("C:/PythonEX/PythonText/test2.txt", 'r')
str = file.read()
print(f"str : {str}")
file.close()

파일에 텍스트 변경 옵션
- replace('변경 하기 전', '변경 할 단어', 몇번 째까지 할지 숫자입력)
file = open('C:/pythonTxt/about_python.txt', 'r')
str = file.read()
print(f'str: {str}')
file.close()
str = str.replace('Python', '파이썬', 2)
print(f'str: {str}')
file = open('C:/pythonTxt/about_python.txt', 'w')
strCnt = file.write(str)
file.close()
텍스트 파일 열기

uri = 'C:/PythonEX/PythonText/'
file = open(uri + 'hello.txt', 'w')
strCnt = file.write('Hello world!!')
print(f'strCnt: {strCnt}')
file.close()
file = open(uri + 'hello.txt', 'w')
strCnt = file.write('Hello Python!!')
print(f'strCnt: {strCnt}')
file.close()
file = open(uri + 'hello.txt', 'a')
file.write('\n')
file.write('Hello data science!!')
file.close()
file = open(uri + 'hello.txt', 'x')
file.write('Nice to meet you!!')
file.close()
file = open(uri + 'hello.txt', 'r')
str = file.read()
print(f'str: {str}')
file.close()
uri = 'C:/PythonEX/PythonText/'
def writePrimeNumber(n):
file = open(uri + 'prime_numbers.txt', 'a')
file.write(str(n))
file.write('\n')
file.close()
inputNumber = int(input("0보다 큰 정수 입력: "))
for number in range(2, (inputNumber + 1)):
flag = True
for n in range(2, number):
if number % n == 0:
flag = False
break
if (flag):
writePrimeNumber(number)