제로베이스 데이터 취업 스쿨 - 11일차(6/12)

수야·2023년 6월 12일
0

사용자 Exception 클래스

사용자 exception클래스는 만들떄 (Exception)클래스를 상속받아야함
받고 super init로 exception 작성

실습

class PasswordLengthShortException(Exception) :
    def __init__(self, n):
        super().__init__(f'{n} : 길이 5 미만!!')

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

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

def adminPassword(n) :
    if len(n) < 5 :
        raise PasswordLengthShortException(n)
    elif len(n) > 10 :
        raise PasswordLengthSLongException(n)
    elif n != 'admin1234' :
        raise PasswordWrongException(n)
    elif n == 'admin1234' :
        print('빙고!')
n=str(input('input admin passwoard :'))
try:
    adminPassword(n)
except PasswordLengthShortException as e  :
    print(e)
except PasswordLengthSLongException as c :
    print(c)
except PasswordWrongException as t :
    print(t)

텍스트 파일 쓰기



open 디렉토리명 , w(쓰기모드)
r(읽기모드)

실습

import time

it = time.localtime()
dateStr = '['+str(it.tm_year)+'년'+str(it.tm_mon)+'월'+str(it.tm_mday)+'일]'
file = open("C:/Users/오연수/OneDrive - PSI Consulting (피에스아이컨설팅)/py.txt", 'w')
strCnt = file.write(dateStr)
print(f'strCnt : {strCnt}')

file.close()

텍스트 파일 읽기

실습

file = open("C:/Users/오연수/OneDrive - PSI Consulting (피에스아이컨설팅)/test.txt",
            'r', encoding='UTF8')
read = file.read()
#파일읽기
print(f'read : {read}')
file.close()

#수정된 파일 읽기
replace = read.replace('파이선', 'python')
print(f'replace : {replace}')
file.close()

#수정된 파일로 저장
file = open("C:/Users/오연수/OneDrive - PSI Consulting (피에스아이컨설팅)/test.txt",
            'w', encoding='UTF8')
file.write(replace)
file.close()

replace는 read모드일때만 생긴다
그래서 그걸 변수에 저장하고
wirte 켜서 파일 대체 해야한다

텍스트 파일 열기


x는 파일 새로 만드는거임


url = "C:/Users/오연수/OneDrive - PSI Consulting (피에스아이컨설팅)/"

#w 모드
fileW=open(url + 'test.txt', 'w')
fileW.write('hello python')
fileW.close()
#w 모드 확인(r)
fileR=open(url + 'test.txt', 'r')
read = fileR.read()
print(f'read = {read}')
fileR.close()

#a 모드
fileA=open(url + 'test.txt', 'a')
fileA.write('\nnice to meet you')
fileA.close()
#a 모드 확인(r)
fileA=open(url+'test.txt','r')
read = fileA.read()
print(f'{read}')
fileA.close()

#x 모드
fileX=open(url+'newtest.txt','x')
fileX.write('real?')
fileX.close()
#x모드 확인(r)
fileX=open(url+'newtest.txt','r')
read = fileX.read()
print(f'{read}')
fileX.close()

실습

url = "C:/Users/오연수/OneDrive - PSI Consulting (피에스아이컨설팅)/"

def primeNumber(n):
    file = open(url +'primeNumber2.txt', 'a')
    file.write(str(n))
    file.write('\n')
    file.close()

inputNumber = int(input('숫자 입력'))

for number in range(2, (inputNumber+1)) :
    flag = True
    for n in range(2, number):
        if inputNumber % n == 0 :
            flag = False
            break
        if (flag) :
            primeNumber(number)

오 어렵다

with ~ as문


알아서 close 됨
with open~ as 설정어
설정어.write()
print(설정어.read())

close 안써도됨

실습

import  random
url = "C:/Users/오연수/OneDrive - PSI Consulting (피에스아이컨설팅)/"

def lottoNum():
    num=random.sample(range(1, 46), 7)
    for i, lottonum in enumerate(num) :
        with open(url + 'lotto.txt', 'a') as l :
            if i <= 4 :
                print(f'{lottonum},',end='')
            elif i == 5 :
                print(f'{lottonum}',end='')
            elif i == 6 :
                print(f'\n bonus : {lottonum}')

lottoNum()
with open(url+'lotto.txt','r') as r :
    print(r.read())

writelines()

반복가능한 자료형의 데이터를 파일에 쓰자

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

실습

list = {'kor':85, 'eng':90}


url = 'C:/Users/오연수/OneDrive - PSI Consulting (피에스아이컨설팅)/'


for sub in list.keys() :
    with open(url + 'score.txt', 'a') as l:
        l.write(sub +'\t' + str(list[sub]) + '\n')

또또또 불친절하네

  • 기본 딕셔너리 모습
    {key1:value1, key2:value2.....}
    예)
dic = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}

Key는 각각 'name', 'phone', 'birth'
Value는 'pey', '010-9999-1234', '1118'

딕셔너리에서 Key 사용해 Value 얻기
= 어떤 Key의 Value를 얻기 위해서는 딕셔너리변수이름[Key]

>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99

https://wikidocs.net/16

  • write할 때는 무조건str로 써야함 숫자 소수 안됨.

  • 그냥 딕셔너리 모양 그대로 파일에 쓰고싶다?
    {}포함해서?

dic = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}

with open(url + 'fileName.txt', 'a') as f:
print(dic, file = f)

readlines(),readline()

여러줄 읽기와 한 줄 읽기

url = 'C:/Users/오연수/OneDrive - PSI Consulting (피에스아이컨설팅)/'

with open(url + 'score.txt', 'r') as rl :
    list = rl.readline()

    while list != '' :
        print(f'{list}', end='')
        list = rl.readline()

오 readline해야할떄 readlines하니까 무한반복나옴 호달달...

실습

scoreDic = {}

url = "C:/Users/오연수/OneDrive - PSI Consulting (피에스아이컨설팅)/"

with open(url+'score.txt', 'r') as sd :
    redline = sd.readline()

    while redline != '' :
        keydiv = redline.split(':')#스플릿 안의 값을 기준으로 나눠줌
        scoreDic[keydiv[0]] = int(keydiv[1].strip('\n'))#strip안에 값 없어짐

        redline = sd.readline()

print(f'{scoreDic}')![](https://velog.velcdn.com/images/softwater/post/9608bb29-f2c4-441d-9e3e-3a9fd3c3905e/image.png)
profile
수야는 코린이에서 더 나아갈거야

0개의 댓글