[제로베이스 데이터 취업스쿨] 23.06.10~11 스터디 노트

김준호·2023년 6월 12일
0
post-thumbnail

1. 예외 처리

1) 사용자정의 예외 클래스

  • Exception 클래스를 상속해서 사용자 예외 클래스를 만들 수 있다.
  • NotUseZeroException클래스를 만들어 Exception클래스를 상속받는다.
  • 나눗셈 기능을 가지는 divCalculator함수를 만든다.
  • 함수안에 분모가 0이 될 때 예외처리가 발생하도록 raise한다.
  • divCalculator함수를 사용 할 때 예외처리가 발생 할 수 있으니 try~except 처리해준다.
  • except처리 할 때는 사용자가 정의한 NotUseZeroException클래스로 처리해 준다.
  • 마지막으로 e(NotUseZeroException)을 출력해서 확인한다.

실습1.

#예외처리 클래스 만들기
class PasswordLengthShortException(Exception):
    def __init__(self,n):
        super().__init__(f'{n} : 길이 5 미만!.')

class PasswordLengthLongException(Exception):
    def __init__(self,n):
        super().__init__(f'{n} : 길이 10 초과!.')

class PasswordWrongException(Exception):
    def __init__(self,n):
        super().__init__(f'{n} : 잘못된 비밀번호!.')

#비밀번호가 맞을 떄 까지 반복
flag = True
while flag:
    pw1 = input('input admin password : ')
    if pw1 == 'admin1234':
        print('빙고')
        flag = False
    else:
        try:
            #while pw1 =='admin1234':
            if len(pw1) < 5:
                raise PasswordLengthShortException(pw1)
            elif len(pw1) >10:
                raise PasswordLengthLongException(pw1)
            elif pw1 != 'admin1234':
                raise PasswordWrongException(pw1)

        except PasswordLengthShortException as e1:
            print(e1)
        except PasswordLengthLongException as e2:
            print(e2)
        except PasswordWrongException as e3:
            print(e3)
input admin password : 123
123 : 길이 5 미만!.
input admin password : 12346785900327
12346785900327 : 길이 10 초과!.
input admin password : admmin1234
admmin1234 : 잘못된 비밀번호!.
input admin password : admin1234
빙고

2. 텍스트 파일

  • 텍스트 파일(.txt)를 파이썬으로 다뤄보자
  • 기본 형태
file = open('C:/pythonTxt/test2.txt','w')
file.write('안녕')
file.close()
  1. open괄호 안에는 [경로/텍스트파일명.txt],와 '모드'
  2. file.write('텍스트 파일 안에 작성하고 싶은 글')
  3. file.close() : 항상 open후에는 close를 해줘야 한다.

1) 텍스트 파일 쓰기

실습

시스템 시간과 일정을 텍스트 파일에 작성해 보자

import time
uri = 'C:/pythonTxt/'

dateStr = time.strftime('%Y-%m-%d %H:%M:%S%p')
todaySchedule = input('오늘의 일정: ')
file = open(uri+'test2.txt','w')
file.write(dateStr+'\n'+todaySchedule)
file.close()
오늘의 일정: 파이썬 공부

2) 텍스트 파일 읽기

실습

  • 먼저 읽기 위해서는 about_python.txt 파일이에 실습문제 내용이 작성 돼있어야 한다.
file = open('C:/pythonTxt/about_python.txt','r')

str = file.read()
print(f'{str}')

file.close()

<#replace('x','y',2) == x라는 문자열을 y로 최초 2개만 변경하겠다.>
str = str.replace('Python','파이썬', 2)
print(f'{str}')

file = open('C:/pythonTxt/about_python.txt','w')
file.write(str)
file.close()
  • <replace('x','y',2) : x라는 문자열을 y로 최초 2개만 변경하겠다.>
Python은 1991년 네덜란드계 소프트웨어 엔지니어인 귀도 반 로섬이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. Python이라는 이름은 귀도가 좋아하는 코미디인〈Monty Python's Flying Circus〉에서 따온 것이다.
파이썬은 1991년 네덜란드계 소프트웨어 엔지니어인 귀도 반 로섬이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디인〈Monty Python's Flying Circus〉에서 따온 것이다.

  • Python이 파이썬으로 바뀌고 저장되었다. 마지막 3번째 Python은 변경되지 않았다.

3) 텍스트 파일 열기

  • 파일 모드는 파일을 어떤 목적으로 open할지 정한다.
    • 'w' 쓰기전용 : 경로에 파일이 없으면 파일 생성, 있으면 덮어씌움
    • 'a' 쓰기전용 : 경로에 있는 파일에 내용 덧붙임
    • 'x' 쓰기전용 : 파일이 이미 있으면 에러발생
    • 'r' 읽기전용 : 파일을 읽어드리는 데 파일이 없으면 에러

실습

사용자가 입력한 숫자에 대한 소수를 구하고 이를 파일에 작성해 보자

uri = 'C:/pythonTxt/'
def writePrimeNumber(n):
    file = open(uri+'prime_number.txt','a')
    file.write(str(n))
    file.write('\n')
    file.close()

userInput = int(input('정수를 입력하시오 : '))

for number in range(2,userInput+1):
    flag = True
    for n in range(2,number):
        if number%n == 0:
            flag = False
            break
    if flag:
        writePrimeNumber(number)
정수를 입력하시오 : 100

4) with~as

5) writelines()

  • 리스트 또는 튜플 데이터를 파일에 쓰기 위한 함수이다.

1.예를 들어 language라는 리스트에 들어있는 항목들을 language.txt에 작성하려면

languages = ['c/c++', 'java', 'c#', 'python', 'javascript']

uri = 'C:/pythonTxt/'
for item in languages:
    with open(uri + 'languages.txt', 'a') as f:
        f.write(item)
        f.write('\n')

반복문을 사용해서 하나씩 텍스트 파일에 넣어줘야 한다. 이런 기능을 해주는 함수가 writelines()이다.

#튜플형식이나 리스트형식 모두 가능
languages = ('c/c++', 'java', 'c#', 'python', 'javascript')

uri = 'C:/pythonTxt/'
with open(uri + 'languages.txt', 'a') as f:
    # f.writelines(languages)
    #개행 처리
    f.writelines(item + '\n' for item in languages)

6) readlines()

7) readline()

profile
취업공부

0개의 댓글