프로그램을 사용할 때 일어나는 오류
try:
예외 발생 가능 코드
except <Exception Type>: # Exception Type은 이미 정해져 있다.
예외 발생시 대응하는 코드
Built-in Exception: 기본적으로 제공하는 예외
| Exception 이름 | 내용 |
|---|---|
| IndexError | List의 Index 범위를 넘어갈 때 |
| NameError | 존재하지 않은 변수를 호출 할 때 |
| ZeroDivisionError | 0으로 숫자를 나눌 때 |
| ValueError | 변환할 수 없는 문자/숫자를 변환할 때 |
| FileNotFoundError | 존재하지 않는 파일을 호출할 때 |
for i in range(10):
try:
print(10 / i)
except ZeroDivisionError as e:
print(e)
print("Not divided by 0")
for i in range(10):
try:
print(10 / i)
except Exception as e:
print(e)
print("Not divided by 0")
try:
예외 발생 가능 코드
except <Exception Type>:
예외 발생시 동작하는 코드
else:
예외가 발생하지 않을 때 동작하는 코드
for i in range(10):
try:
result = 10 / i
except ZeroDivisionError:
print("Not divided by 0")
else:
print(10 / i)
try:
예외 발생 가능 코드
except <Exception Type>:
예외 발생시 동작하는 코드
finally:
예외 발생 여부와 상관없이 실행됨
try:
for i in range(1, 10):
result = 10 // i
print(result)
except ZeroDivisionError:
print("Not divided by 0")
finally:
print("종료되었습니다.")
raise <Exception Type>(예외정보)
while True:
value = input("변환할 정수 값을 입력해주세요")
for digit in value:
if digit not in "0123456789":
raise ValueError("숫자값을 입력하지 않으셨습니다")
print("정수값으로 변환된 숫자 -", int(value))
assert 예외조건
def get_binary_nmubmer(decimal_number):
assert isinstance(decimal_number, int)
return bin(decimal_number)
print(get_binary_nmubmer(10))
File system: OS에서 파일을 저장하는 트리구조 저장 체계
Directory
File
컴퓨터에서 정보를 저장하는 논리적인 단위 (wikipedia)
파일은 파일명과 확장자로 식별된다. (예: hello.py)
실행, 쓰기, 읽기 등을 할 수 있다.
파일의 종류
기본적인 파일 종류로 text 파일과 binary 파일로 나눈다.

파이썬은 파일 처리를 위해 “open” 키워드를 사용한다.
| 파일열기 모드 | 설명 |
|---|---|
| r | 읽기모드 - 파일을 읽기만 할 때 사용 |
| w | 쓰기모드 - 파일에 내용을 쓸 때 사용 |
| a | 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용 |
f = open("<파일이름>", "접근 모드")
f.close()
f = open("i_have_a_dream.txt", "r" ) # 대상파일이 같은 폴더에 있을 경우
contents = f.read()
print(contents)
f.close()
with open("i_have_a_dream.txt", "r") as my_file:
contents = my_file.read()
print (type(contents), contents)
한 줄씩 읽어 List Type으로 반환한다.
with open("i_have_a_dream.txt", "r") as my_file:
content_list = my_file.readlines() #파일 전체를 list로 반환
print(type(content_list)) #Type 확인
print(content_list) #리스트 값 출력
with open("i_have_a_dream.txt", "r") as my_file:
i = 0
while True:
line = my_file.readline()
if not line:
break
print (str(i) + " === " + line.replace("\n", "")) #한줄씩 값 출력
i = i + 1
read: 파일 전부를 불러온다.
readlines: \n을 기준으로 자른 다음 List 형태로 불러온다.
readline: 한 줄 씩 불러온다.
f = open("count_log.txt", 'w', encoding="utf8")
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
with open("count_log.txt", 'a', encoding="utf8") as f:
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
f.write(data)
import os
os.mkdir("log") # 현재 디렉토리에 log 폴더 생성
if not os.path.isdir("log"):
os.mkdir("log")
import pathlib
cwd = pathlib.Path.cwd()
cwd
# WindowsPath('D:/workspace')
cwd.parent
# WindowsPath('D:/')
list(cwd.parents)
# [WindowsPath('D:/')]
list(cwd.glob("*"))
# [WindowsPath('D:/workspace/ai-pnpp'), WindowsPath('D:/workspace/cs50_auto_grader'), WindowsPath('D:/workspace/data-academy'), WindowsPath('D:/workspace/DSME-AI-SmartYard'), WindowsPath('D:/workspace/introduction_to_python_TEAMLAB_MOOC')]
파이썬의 객체를 영속화(persistence)하는 built-in 객체
import pickle
f = open("list.pickle", "wb")
test = [1, 2, 3, 4, 5]
pickle.dump(test, f)
f.close()
f = open("list.pickle", "rb")
test_pickle = pickle.load(f)
print(test_pickle)
f.close()
import pickle
class Mutltiply(object):
def __init__(self, multiplier):
self.multiplier = multiplier
def multiply(self, number):
return number * self.multiplier
muliply = Mutltiply(5)
muliply.multiply(10)
f = open("multiply_object.pickle", "wb")
pickle.dump(muliply, f)
f.close()
f = open("multiply_object.pickle", "rb")
multiply_pickle = pickle.load(f)
multiply_pickle.multiply(5)
프로그램이 실행되는 동안 일어나는 정보를 기록
기록을 print로 남기는 것도 가능하다.
Python의 기본 Log 관리 모듈
import logging
logging.debug("틀렸잖아!")
logging.info("확인해")
logging.warning("조심해!")
logging.error("에러났어!!!")
logging.critical ("망했다...")
프로그램 진행 상황에 따라 다른 Level의 Log를 출력