사용자 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)
오 어렵다
알아서 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()는 리스트 또는 튜플 데이터를 파일에 쓰기 위한 함수이다.
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')
또또또 불친절하네
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
write할 때는 무조건str로 써야함 숫자 소수 안됨.
그냥 딕셔너리 모양 그대로 파일에 쓰고싶다?
{}포함해서?
dic = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
with open(url + 'fileName.txt', 'a') as f:
print(dic, file = f)
여러줄 읽기와 한 줄 읽기
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}')