🎉🎉🎉
👩🏻💻 4주차 우수 혼공족 선정!!! 감사합니당 🌟🌟
그리구,, 환절기라 그런가 아프신 분들이 좀 많나보다.
혼공 학습단 친구덜아,,! 다덜 아프지마,,,😭
06-1. 구문 오류와 예외 ▷ 핵심 키워드 - 구문 오류 / 예외(런타임 에러) / 기본 예외 처리 / try except 구문
✍🏻 지금까지의 책 예제에서 발생하는 오류들을 '예외' 라고 불렀다
✏️오류의 종류
프로그램 실행 전 에 발생하는 오류 -> 구문 오류
프로그램 실행 중 에 발생하는 오류 -> 예외 / 런타임 오류
👻구문 오류
-괄호의 개수, 들여쓰기 문제 등으로 프로그램이 실행되기도 전에 발생하는 오류
print("# 예외를 강제로 발생시켜 보자)# 닫는 따옴표로 문자열을 닫지 않아서 오류 발생
👉🏻SyntaxError: 구문에 문제가 있어 프로그램이 실행조차 되지 않는 오류
👻예외
-실행 중에 발생하는 오류
#프로그램 시작 print("# 프로그램이 시작되었습니다")#예외 발생 코드 list_a[1]
👆🏻코드 실행하면 프로그램은 실행되지만, list_a[1]을 읽을 때 NameError가 발생함
👉🏻list_a = [1, 2, 3, 4, 5]를 넣어 수정하면 정상적으로 실행된다 / list_a를 정의해야 했기 때문
✏️기본 예외 처리
-예외 처리: 예외를 해결하는 모든 것 / 다음 두 가지로 나뉨
조건문 을 사용하는 방법
try 구문 을 사용하는 방법
👻예외 상황 확인하기
-예외가 발생할 수 있는 코드
number_input_a = int(intput("정수 입력>") print("원의 반지름:", number_input_a) print("원의 둘레:", 2 * 3.14 * number_input_a) print("원의 넓이:", 3.14 * number_input_a * number_input_a)
👉🏻여기서 정수가 아닌 "7센티미터"라는 문자열을 입력하게 되면 예외가 발생하게 된다
👻조건문으로 예외 처리하기
-'정수를 입력하지 않았을 때'를 조건으로 구분 해서 해당 상황일 때 다른 처리를 하도록 설정하기
📋isdigit() 함수 - 숫자로만 구성된 글자인지 확인 / int() 함수를 이용해 숫자로 변환할 수 없는 문자열을 변환하면서 발생하는 예외를 피할 수 있다
🖐🏻직접 해보는 손코딩🖐🏻
#숫자를 입력받습니다.
user_input_a = input ( "정수 입력>" )
#사용자 입력이 숫자로만 구성되어 있을 때
if user_input_a . isdigit ():
#숫자로 변환합니다.
number_input_a = int ( user_input_a )
#출력합니다.
print ( "원의 반지름:" , number_input_a )
print ( "원의 둘레:" , 2 * 3.14 * number_input_a )
print ( "원의 넓이:" , 3.14 * number_input_a * number_input_a )
else :
print ( "정수를 입력하지 않았습니다." )
-결과
정수 입력
문자열 입력
✏️try except 구문
-예외가 발생할 상황을 예측하고 모두 조건문으로 처리하는 것은 매우 힘든 일이다. 따라서 요즘 프로그래밍 언어는 예외를 처리할 수 있는 구문을 제공 한다. 바로 try except 구문.
try: 예외가 발생할 가능성이 있는 코드 except: 예외가 발생했을 때 실행할 코드
🖐🏻직접 해보는 손코딩🖐🏻
#try except 구문으로 예외를 처리합니다.
try :
#숫자로 변환합니다.
number_input_a = int ( input ( "정수 입력>" ))
#출력합니다.
print ( "원의 반지름:" , number_input_a )
print ( "원의 둘레:" , 2 * 3.14 * number_input_a )
print ( "원의 넓이:" , 3.14 * number_input_a * number_input_a )
except :
print ( "무언가 잘못되었습니다." )
-결과
👻try except 구문과 pass 키워드 조합하기
try: 예외가 발생할 가능성이 있는 코드 except: pass
🖐🏻직접 해보는 코딩🖐🏻
# 변수를 선언합니다.
list_input_a = [ "52" , "273" , "32" , "스파이" , "103" ]
# 반복을 적용합니다.
list_number = []
for item in list_input_a :
#숫자로 변환해서 리스트에 추가합니다.
try :
float ( item ) # 예외가 발생하면 알아서 다음으로 진행은 안 되겠지?
list_number . append ( item ) # 예외 없이 통과했으면 list_number 리스트에 넣어줘!
except :
pass
# 출력합니다.
print ( " {} 내부에 있는 숫자는" . format ( list_input_a ))
print ( " {} 입니다." . format ( list_number ))
-결과
👉🏻숫자로 변환할 수 없는 문자열이라면 float(item)를 실행할 때 예외 발생 / 이를 이용해서 try except 구문으로 감싸고 예외가 발생하지 않는 경우에만 list_number.append(item)가 실행되도록 만드는 코드
✏️try except else 구문
try: 예외가 발생할 가능성이 있는 코드 except: 예외가 발생했을 때 실행할 코드 else: 예외가 발생하지 않았을 때 실행할 코드
🖐🏻직접 해보는 손코딩🖐🏻
#try except else 구문으로 예외를 처리합니다.
try :
#숫자로 변환합니다.
number_input_a = int ( input ( "정수 입력>" ))
except :
print ( "정수를 입력하지 않았습니다." )
else :
#출력합니다.
print ( "원의 반지름:" , number_input_a )
print ( "원의 둘레:" , 2 * 3.14 * number_input_a )
print ( "원의 넓이:" , 3.14 * number_input_a * number_input_a )
-결과
정수 입력
문자열 입력
✏️finally 구문
-예외가 발생하든 발생하지 않든 무조건 실행할 때 사용하는 코드
try: 예외가 발생할 가능성이 있는 코드 except: 예외가 발생했을 때 실행할 코드 else: 예외가 발생하지 않았을 때 실행할 코드 finally: 무조건 실행할 코드
🖐🏻직접 해보는 손코딩🖐🏻
#try except 구문으로 예외를 처리합니다.
try :
#숫자로 변환합니다.
number_input_a = int ( input ( "정수 입력>" ))
#출력합니다.
print ( "원의 반지름:" , number_input_a )
print ( "원의 둘레:" , 2 * 3.14 * number_input_a )
print ( "원의 넓이:" , 3.14 * number_input_a * number_input_a )
except :
print ( "정수를 입력하지 않았습니다." )
else :
print ( "예외가 발생하지 않았습니다." )
finally :
print ( "일단 프로그램이 어떻게든 끝났습니다." )
-결과
정수 입력
문자열 입력
👉🏻두 가지 모두 "일단 프로그램이 어떻게든 끝났습니다."라는 fanally 구문이 실행된다.
👻try, except, finally 구문의 조합
-예외 처리 구문의 규칙
try 구문은 단독으로 사용할 수 없으며, 반드시 except 구문 또는 finally 구문과 함께 사용 해야 한다
else 구문은 반드시 except 구문 뒤에 사용 해야 한다
-조합
try + except
try + except + else
try + except + finally
try + except + else + finally
try + finally
이 외의 조합은 실행할 때 오류가 발생함
👻finally에 대한 오해
🖐🏻직접 해보는 손코딩1🖐🏻
-파일이 제대로 닫혔는지 확인해보기
#try except 구문 사용
try :
#파일을 엽니다
file = open ( "info.txt" , "w" )
#여러 가지 처리를 수행
#파일을 닫습니다
file . close ()
except :
print ( "오류가 발생했습니다." )
print ( "#파일이 제대로 닫혔는지 확인하기" )
print ( "file.closed:" , file . closed )
-결과
제대로 닫힘!
📋프로그램이 항상 켜져있는 프로그램(데몬 또는 서비스)이라면 문제가 생긴다.
🖐🏻직접 해보는 손코딩2🖐🏻
-파일 중간에 예외 발생시키기
#try except 구문을 사용
try :
#파일을 엽니다.
file = open ( "info.txt" , "w" )
#여러 가지 처리를 수행합니다.
예외.발생해라() #일부러 예외 발생시키기
#파일을 닫습니다.
file . close ()
except :
print ( "오류가 발생했습니다." )
print ( "#파일이 제대로 닫혔는지 확인하기" )
print ( "file.closed:" , file . closed )
-결과
실패!
👉🏻이걸 finally 구문을 사용해 파일을 닫게 해야 한다.
🖐🏻직접 해보는 손코딩3🖐🏻
-finally 구문 사용해 파일 닫기
#try except 구문을 사용
try :
#파일을 엽니다
file = open ( "info.txt" , "w" )
#여러 가지 처리를 수행합니다
예외.발생해라()
except :
print ( "오류가 발생했습니다." )
finally :
#파일을 닫습니다
file . close ()
print ( "#파일이 제대로 닫혔는지 확인하기" )
print ( "file.closed:" , file . closed )
-결과
오류 발생해도 제대로 닫힘!
🖐🏻직접 해보는 손코딩4🖐🏻
-그냥 try except 구문 끝난 후에 파일 닫아보기
#try except 구문을 사용합니다
try :
#파일을 엽니다
file = open ( "info.txt" , "w" )
#여러 가지 처리를 수행합니다
예외.발생해라()
except :
print ( "오류가 발생했습니다." )
#파일을 닫습니다
file . close ()
print ( "#파일이 제대로 닫혔는지 확인하기" )
print ( "file.closed:" , file . closed )
-결과
👆🏻그냥 구문 모두 끝난 후에 파일을 닫아도 된다.
👉🏻파일 처리를 할 때 finally를 무조건 사용하는 것이 아니라 finally 키워드를 사용하면 코드가 깔끔해질 것 같다고 생각되는 경우에 사용하는 것
👻try 구문 내부에서 return 키워드를 사용하는 경우 (finally 깔끔)
-finally 구문은 반복문 또는 함수 내부에 있을 때 위력을 발휘한다.
🖐🏻직접 해보는 손코딩1🖐🏻
#test() 함수를 선언합니다
def test ():
print ( "test() 함수의 첫 줄입니다." )
try :
print ( "try 구문이 실행되었습니다." )
return
print ( "try 구문의 return 키워드 뒤입니다." )
except :
print ( "except 구문이 실행되었습니다." )
else :
print ( "else 구문이 실행되었습니다." )
finally :
print ( "finally 구문이 실행되었습니다." )
print ( "test() 함수의 마지막 줄입니다." )
#test() 함수를 호출합니다.
test ()
-결과
.👉🏻try 구문 중간에서 탈출해도 finally 구문은 무조건 실행된다.
🖐🏻직접 해보는 손코딩2🖐🏻
#함수를 선언합니다
def write_text_file ( filename , text ):
#try except 구문을 사용합니다
try :
#파일을 엽니다
file = open ( filename , "w" )
#여러 가지 처리를 수행합니다
return file . write ( text )
except :
print ( "오류가 발생했습니다." )
finally :
#파일을 닫습니다
file . close ()
#함수를 호출합니다
write_text_file ( "test.txt" , "안녕하세요!" )
-결과
(결과가 맞는지는 모르겠지만 현재 낡고 지쳤으므로 이것으로 기록)
👻반복문과 함께 사용하는 경우(finally 깔끔22)
-반복문에서 break로 빠져나갈 때
🖐🏻직접 해보는 손코딩🖐🏻
print ( "프로그램이 시작되었습니다." )
while True :
try :
print ( "try 구문이 실행되었습니다." )
break
print ( "try 구문의 break 키워드 뒤입니다." )
except :
print ( "except 구문이 실행되었습니다." )
finally :
print ( "finally 구문이 실행되었습니다." )
print ( "while 반복문의 마지막 줄입니다." )
print ( "프로그램이 종료되었습니다." )
-결과
와!!!!!!
👉🏻break 키워드로 try 구문 전체를 빠져나가도 finally 구문이 실행되는 것을 볼 수 있다
6-1 chapter 마무리
🔎핵심 포인트
-구문 오류 는 프로그램의 문법적인 오류로 프로그램이 실행조차 되지 않게 만드는 오류
-예외(런타임 에러) 는 프로그램 실행 중에 발생하는 에러
-기본 예외 처리 는 조건문 등을 사용해 예외를 처리하는 기본적인 방법
-try except 구문 은 예외 처리에 특화된 구문
06-2. 예외 고급 ▷ 핵심 키워드 - 예외 객체 / raise 구문 / 깃허브
✍🏻 예외 객체 - 프로그래밍 언어는 예외가 발생하면 예외와 관련된 정보가 생긴다. 그리고 이러한 예외 정보는 예외 개게에 저장된다.
-예외 객체의 형태
try: 예외가 발생할 가능성이 있는 구문 except 예외의 종류 as 예외 객체를 활용할 변수 이름 : 예외가 발생했을 때 실행할 구문
✏️예외 객체
-Exception: '모든 예외의 어머니'
🖐🏻직접 해보는 손코딩🖐🏻
# try except 구문으로 예외를 처리합니다.
try :
# 숫자로 변환합니다
number_input_a = int ( input ( "정수 입력>" ))
# 출력합니다
print ( "원의 반지름:" , number_input_a )
print ( "원의 둘레:" , 2 * 3.14 * number_input_a )
print ( "원의 넓이:" , 3.14 * number_input_a * number_input_a )
except Exception as exception :
# 예외 객체를 출력해봅니다
print ( "type(exception):" , type ( exception ))
print ( "exception:" , exception )
-결과
👉🏻예외 강제 발생시킴!
✏️예외 구분하기
-예외 객체를 사용하면 except 구문을 if 조건문처럼 사용해서 예외를 구분 할 수 있다.
👻여러 가지 예외가 발생할 수 있는 상황
🖐🏻직접 해보는 손코딩🖐🏻
-여러 가지 예외가 발생할 수 있는 코드
# 변수를 선언합니다
list_number = [ 52 , 273 , 32 , 72 , 100 ]
# try except 구문으로 예외를 처리합니다
try :
# 숫자를 입력받습니다
number_input = int ( input ( "정수 입력:" ))
# 리스트의 요소를 출력합니다
print ( " {} 번째 요소: {} " . format ( number_input , list_number [ number_input ]))
except Exception as exception :
# 예외 객체를 출력합니다
print ( "type(exception):" , type ( exception ))
print ( "exception:" , exception )
-결과
첫 번째) 정상적으로 정수를 입력한 경우에는 어떠한 예외도 발생하지 않음
두 번째) 정수로 변환될 수 없는 값을 입력한 경우에는 ValueError가 발생 함
세 번째) 정수를 입력하지만, 리스트의 길이를 넘는 인덱스를 입력한 경우에는 IndexError가 발생 함
👻예외 구분하기
-파이썬은 except 구문 뒤에 예외의 종류를 입력해서 예외를 구분 할 수 있다.
try: 예외가 발생할 가능성이 있는 구문 except 예외의 종류A: 예외A가 발생했을 때 실행할 구문 except 예외의 종류B: 예외B가 발생했을 때 실행할 구문 except 예외의 종류C: 예외C가 발생했을 때 실행할 구문
🖐🏻직접 해보는 손코딩🖐🏻
# 변수를 선언합니다
list_number = [ 52 , 273 , 32 , 72 , 100 ]
# try except 구문으로 예외를 처리합니다
try :
# 숫자를 입력받습니다
number_input = int ( input ( "정수 입력>" ))
# 리스트의 요소를 출력합니다
print ( " {} 번째 요소: {} " . format ( number_input , list_number [ number_input ]))
except ValueError :
# ValueError가 발생하는 경우
print ( "정수를 입력해 주세요!" )
except IndexError :
# IndexError가 발생하는 경우
print ( "리스트의 인덱스를 벗어났어요!" )
-결과
정수가 아닌 값을 입력
리스트의 인덱스를 넘는 숫자를 입력
👻예외 구분 구문과 예외 객체
-as 키워드: 예외를 구분할 때 각각의 except 구문 뒤에 예외 객체를 붙여 활용 할 수 있다.
🖐🏻직접 해보는 손코딩🖐🏻
# 변수를 선언합니다
list_number = [ 52 , 273 , 32 , 72 , 100 ]
# try except 구문으로 예외를 처리합니다
try :
# 숫자를 입력받습니다
number_input = int ( input ( "정수 입력>" ))
# 리스트의 요소를 출력합니다
print ( " {} 번째 요소: {} " . format ( number_input , list_number [ number_input ]))
except ValueError as exception :
# ValueError가 발생하는 경우
print ( "정수를 입력해 주세요!" )
print ( "exception:" , exception )
except IndexError as exception :
# IndexError가 발생하는 경우
print ( "리스트의 인덱스를 벗어났어요!" )
print ( "exception:" , exception )
-결과
✏️모든 예외 잡기
-except 구문으로 예외를 구분하면 if, elif, else 조건문처럼 차례대로 오류를 검출 하면서 확인한다.
🖐🏻직접 해보는 손코딩🖐🏻
-예외 처리를 했지만 예외를 못 잡는 경우
# 변수를 선언합니다
list_number = [ 52 , 273 , 32 , 72 , 100 ]
# try excpet 구문으로 예외를 처리합니다
try :
# 숫자를 입력받습니다
number_input = int ( input ( "정수 입력>" ))
# 리스트의 요소를 출력합니다
print ( " {} 번째 요소: {} " . format ( number_input , list_number [ number_input ]))
예외. 발생해주세요() #잡지 않은 예외가 발생하도록
except ValueError as exception :
# ValueError가 발생하는 경우
print ( "정수를 입력해 주세요!" )
print ( type ( exception ), exception )
except IndexError as exception :
# IndexError가 발생하는 경우
print ( "리스트의 인덱스를 벗어났어요!" )
print ( type ( exception ), exception )
-결과
🖐🏻직접 해보는 손코딩🖐🏻
# 변수를 선언합니다
list_number = [ 52 , 273 , 32 , 72 , 100 ]
# try except 구문으로 예외를 처리합니다
try :
# 숫자를 입력 받습니다
number_input = int ( input ( "정수 입력>" ))
# 리스트의 요소를 출력합니다
print ( " {} 번째 요소: {} " . format ( number_input , list_number [ number_input ]))
예외.발생해주세요()
except ValueError as exception :
# ValueError가 발생하는 경우
print ( "정수를 입력해 주세요!" )
print ( type ( exception ), exception )
except IndexError as exception :
# IndexError가 발생하는 경우
print ( "리스트의 인덱스를 벗어났어요!" )
print ( type ( exception ), exception )
except Exception as exception :
# 이외의 예외가 발생한 경우
print ( "미리 파악하지 못한 예외가 발생했습니다." )
print ( type ( exception ), exception )
-결과
📋큰 규모의 프로그램을 개발할 때는 '예외 처리로 떡칠을 한다'라고 표현할 정도로 예외 처리를 많이 사용한다. 최대한 잡을 수 있는 것들을 예측해 보고 잡을 수 있도록 노력하는 것이 개발자의 자세!
✏️raise 구문
-프로그램이 강제 종료되는 것을 막기 위해 예외는 꼭 처리해야 한다.
-아직 구현되지 않은 부분에서 강제로 예외 발생시키기
# 입력을 받습니다 number = input("정수 입력>") number = int(number)#조건문 사용 if number > 0: # 양수일 때: 아직 미구현 상태입니다 raise NotImplementedError else: # 음수일 때: 아직 미구현 상태입니다 raise NotImplementError
👉🏻이 때 사용한 raise 키워드 가 예외를 발생시키는 기능 을 한다.
raise 예외 객체
🌟깃허브
-대부분의 파이썬 프레임워크 와 라이브러리 들은 깃허브(GitHub)라는 사이트에 코드가 공개되어 있다.
(어케... 쓰는거지?)
6-2 마무리
🔎핵심 포인트
-예외 객체 는 예외와 관련된 정보를 담고 있는 객체
-raise 구문 은 예외를 강제로 발생시킬 때 사용하는 구문
-깃허브 는 많은 사람이 함께 개발하는 소셜 코딩 사이트
07-1. 표준 모듈 ▷ 핵심 키워드 - 표준 모듈 / import 구문 / from 구문 / as 키워드
✍🏻모듈: 여러 변수와 함수를 가지고 있는 집합체 로, 크게 표준 모듈 과 외부 모듈 로 나뉜다.
표준 모듈: 파이썬에 기본적으로 내장되어 있는 모듈
외부 모듈: 다른 사람들이 만들어서 공개한 모듈
-모듈을 가져올 때는 👇🏻다음과 같은 구문을 사용한다
import 모듈 이름
✏️모듈 사용의 기본: math 모듈
-math 모듈은 수학 과 관련된 기능을 가지고 있다.
👻모듈 문서
-math 모듈의 함수
변수 또는 함수
설명
sin(x)
사인값을 구합니다
cos(x)
코사인값을 구합니다
tan(x)
탄젠트값을 구합니다
log(x[, base])
로그값을 구합니다
ceil(x)
올림합니다
floor(x)
내림합니다
👻from 구문
-앞에 무언가를 계속 입력하는 것이 귀찮다고 느껴질 경우에는 from 구문 을 사용한다
from 모듈 이름 import 가져오고 싶은 변수 또는 함수
👻as 구문
-모듈의 이름이 너무 길어서 짧게 줄여 사용하고 싶은 경우에는 as 구문 을 사용한다
import 모듈 as 사용하고 싶은 식별자
✏️random 모듈
-random 모듈은 랜덤한 값을 생성할 때 사용 하는 모듈
import random
👉🏻random 모듈을 임포트한 뒤, random을 입력하고 뒤에 마침표를 찍으면 자동 완성 기능으로 random 모듈이 가지고 있는 기능들을 확인할 수 있다
🖐🏻직접 해보는 손코딩🖐🏻
import random
print ( "# random 모듈" )
# random(): 0.0 <= x < 1.0 사이의 float 리턴합니다
print ( "- random():" , random . random ())
# uniform(min, max): 지정한 범위 사이의 float를 리턴합니다
print ( "- uniform(10, 20):" , random . uniform ( 10 , 20 ))
# randrange(): 지정한 범위의 int를 리턴합니다
# - randrange(max): 0부터 max 사이의 값을 리턴합니다
# - randrange(min, max): min부터 max 사이의 값을 리턴합니다
print ( "- randrange(10):" , random . randrange ( 10 ))
# choice(list): 리스트 내부에 있는 요소를 랜덤하게 선택합니다
print ( "- choice([1, 2, 3, 4, 5]):" , random . choice ([ 1 , 2 , 3 , 4 , 5 ]))
# shuffle(list): 리스트의 요소들을 랜덤하게 섞습니다
print ( "- shuffle([1, 2, 3, 4, 5]):" , random . shuffle ([ 1 , 2 , 3 , 4 , 5 ]))
# sample(list, k=<숫자>): 리스트의 요소 중에 k개를 뽑습니다
print ( "- sample([1, 2, 3, 4, 5], k=2):" , random . sample ([ 1 , 2 , 3 , 4 , 5 ], k = 2 ))
-결과
✏️sys 모듈
-sys 모듈: 시스템과 관련된 정보를 가지고 있는 모듈
🖐🏻직접 해보는 손코딩🖐🏻
# 모듈을 읽어 들입니다
import sys
# 명령 매개변수를 출력합니다
print ( sys . argv )
print ( "---" )
# 컴퓨터 환경과 관련된 정보를 출력합니다
print ( "getwindowsversion: ()" , sys . getwindowsversion ())
print ( "---" )
print ( "copyright:" , sys . copyright )
print ( "---" )
print ( "version:" , sys . version )
# 프로그램을 강제로 종료합니다
sys . exit ()
(명령 프롬포트 창에서 [py module_sys.py 10 20 30]을 입력해서 실행해보기. 경로가 일치해야 해서 Desktop에서 실행했다)
-결과
👉🏻sys.argv 라고 되어 있는 부분이 명령 매개변수 -> 프로그램을 실행할 때 추가로 입력하는 값 들을 의미한다
👉🏻코드를 실행하면 sys.argv에 ['module_sys.py', '10', '20', '30']이라는 리스트 가 들어오게 된다. 이 외의 값들은 윈도우의 버전, 파이썬의 저작권 등을 확인하는 단순한 것들
✏️os 모듈
-os 모듈: 운영체제와 관련된 기능을 가진 모듈 / 새로운 폴더를 만들거나 폴더 내부의 파일 목록을 보는 일 모두 os 모듈을 활용해서 처리한다.
🖐🏻직접 해보는 손코딩🖐🏻
# 모듈을 읽어들입니다
import os
# 기본 정보를 몇 개 출력해 봅니다
print ( "현재 운영체제:" , os . name )
print ( "현재 폴더:" , os . getcwd ())
print ( "현재 폴더 내부의 요소:" , os . listdir ())
# 폴더를 만들고 제거합니다(폴더가 비어있을 때만 제거 가능)
os . mkdir ( "hello" )
os . rmdir ( "hello" )
# 파일을 생성하고 + 파일 이름을 변경합니다
with open ( "original.txt" , "w" ) as file :
file . write ( "hello" )
os . rename ( "original.txt" , "new.txt" )
# 파일을 제거합니다
os . remove ( "new.txt" )
#os.unlink("new.txt")
# 시스템 명령어 실행
os . system ( "dir" )
-결과
너무 길어서 중간부터는 잘랐따
📋remove() 함수와 unlink() 함수는 같은 함수 이다. 아무거나 사용해도 상관 없다.
✏️datetime 모듈
-datetime 모듈: date(날짜), time(시간)과 관련된 모듈
🖐🏻직접 해보는 손코딩1🖐🏻
# 모듈을 읽어들입니다
import datetime
# 현재 시각을 구하고 출력하기
print ( "# 현재 시각 출력하기" )
now = datetime . datetime . now ()
print ( now . year , "년" )
print ( now . month , "월" )
print ( now . day , "일" )
print ( now . hour , "시" )
print ( now . minute , "분" )
print ( now . second , "초" )
print ()
# 시간 출력 방법
print ( "# 시간을 포맷에 맞춰 출력하기" )
output_a = now . strftime ( "%Y.%m. %d %H:%M:%S" )
output_b = " {} 년 {} 월 {} 일 {} 시 {} 분 {} 초" . format ( now . year ,\
now . month ,\
now . day ,\
now . hour ,\
now . minute ,\
now . second )
output_c = now . strftime ( "%Y {} %m {} %d{} %H {} %M {} %S {} " ). format (* "년월일시분초" )
print ( output_a )
print ( output_b )
print ( output_c )
print ()
-결과
👉🏻strftime() 함수를 사용하면 시간을 형식에 맞게 출력 할 수 있지만, 한국어 등의 문자를 매개변수에 넣을 수 없다. 이를 보완하고자 output_b와 output_c 같은 형식을 사용한다.
📋문자열, 리스트 등 앞에 *을 붙이면 요소 하나하나가 매개변수로 지정된다
🖐🏻직접 해보는 손코딩2🖐🏻
# 모듈을 읽어 들입니다
import datetime
now = datetime . datetime . now ()
# 특정 시간 이후의 시간 구하기
print ( "# datetime.timedelta로 시간 더하기" )
after = now + datetime . timedelta (\
weeks = 1 ,\
days = 1 ,\
hours = 1 ,\
minutes = 1 ,\
seconds = 1 )
print ( after . strftime ( "%Y {} %m {} %d{} %H {} %M {} %S {} " ). format (* "년월일시분초" ))
print ()
# 특정 시간 요소 교체하기
print ( "# now.replace()로 1년 더하기" )
output = now . replace ( year =( now . year + 1 ))
print ( output . strftime ( "%Y {} %m {} %d{} %H {} %M {} %S {} " ). format (* "년월일시분초" ))
-결과
👉🏻timedelta() 함수를 사용하면 특정한 시간의 이전 또는 이후를 구할 수 있다
👉🏻1년 후를 구할 때 는 replace() 함수를 사용한다
✏️time 모듈
-time 모듈: 시간과 관련된 기능 을 다룰 때 사용함 / 특정 시간 동안 코드 진행을 정지할 때 많이 사용한다
-time 모듈 임포트 방법
import time
-time.sleep() 함수: 특정 시간 동안 코드 진행을 정지할 때 사용하는 함수 / 매개변수에는 정지하고 싶은 시간을 초 단위로 입력한다
🖐🏻직접 해보는 손코딩🖐🏻
import time
print ( "지금부터 5초 동안 정지합니다!" )
time . sleep ( 5 )
print ( "프로그램을 종료합니다" )
-결과
5초 후에 "프로그램을 종료합니다"가 뜸
✏️urllib 모듈
-urllib 모듈: URL을 다루는 라이브러리 / 인터넷 주소를 활용 할 때 사용하는 라이브러리
🖐🏻직접 해보는 손코딩🖐🏻
# 모듈을 읽어 들입니다
from urllib import request
# urlopen() 함수로 구글의 메인 페이지를 읽습니다
output = target .read()
# 출력합니다
print ( output )
-결과
너무 길어서 짤랐다.
📋앞에 'b'라는 글자가 있는데 이는 바이너리 데이터(binary data) 를 의미한다.
7-1 마무리
🔎핵심 포인트
-표준 모듈 은 파이썬이 기본적으로 제공하는 모듈
-import 구문 은 모듈을 읽어 들일 때 사용하는 구문
-모듈을 읽어들일 때 from 구문 을 사용하면 모듈에서 가져오려는 변수나 함수 앞에 모듈 이름을 붙이지 않아도 된다
-as 키워드 는 모듈을 읽어 들이고 별칭을 붙일 때 사용하는 구문
기본미션
Q) 구문 오류와 예외의 차이
A) 구문 오류 는 프로그램 실행 전 에 나는 오류로, try except 구문으로 처리할 수 없다.
반면에 예외 는 프로그램 실행 중 에 나는 오류로, try except 구문으로 처리할 수 있다.
선택미션
Q) 구문 오류가 예상되면 '구문 오류'에, 예외 발생이 예상되면 '예외'에 체크 표시를 한 후, 예상되는 에러명도 쓰시오.
output = 10 + "개" #1 int("안녕하세요") #2 cursor.close) #3 [1, 2, 3, 4, 5][10] #4
A)
#1. 예외 / TypeError
#2. 예외 / ValueError
#3. 구문 오류 / SyntaxError
#4. 예외 / IndexError
+) 와 5주차 진짜 장난아니닼ㅋㅋㅋㅋㅋ 진짜 몇 시간동안 머리 싸매면서 이해하기 위해 고민하고 또 고민했다...
그래도 어찌저찌 끝까지 공부완료했다! 뿌듯뿌듯 ✨✨
다음 주가 마지막 주인데, 끝까지 잘 마무리하고 싶다. 마지막까지 화이팅~!!!! ✊🏻✊🏻