안녕하세요. 우당탕탕 개발 일지입니다.
파이썬 에디터 IDLE 3.12.1을 사용합니다.
책과 수업 내용을 바탕으로 요약한 내용과 교재 뒤 연습문제입니다.
- 파일의 필요성
- 파일모드
- 그외
1. 파일의 필요성
- 메모리:컴퓨터의 전원이 꺼지지면 객체가 사라진다.
- 하드디스크: 파일 형태로 저장하면 전원이 꺼지더라도 데이터가 보존된다.
2. 파일모드
교수님이 처음에 이 단원을 배울 때 그런 질문을 하셨습니다.
"여러분 코끼리를 냉자고에 넣는 방법이 뭐죠?"
"냉장고 문을 열고 코끼리를 넣고 냉장고 문을 닫는 겁니다."
파일도 마찬가지 입니다. 파일을 열고 작업하고 파일을 닫는 것입니다.
★ 파일을 불러올 때는 파일이 존재해야 하고 불러오고 싶은 파일의 이름을 알아야 합니다.
※ .close()를 안해도 가끔 동작하는 경우가 있는데
그건 그저 운이 좋아서 돌아가는 것임으로 .close()는 꼭 해주어야 합니다.
파일모드 | 모드 이름 | 설명 |
“r” | read mode | 파일을 처음부터 읽는다. |
“w” | write mode | 파일을 처음부터 쓴다. |
(파일이 없으면 →생성) | ||
(파일이 있으면 →기존 내용 삭제) | ||
“a” | append mode | 파일의 끝에 쓴다. |
(파일이 없으면 →생성) | ||
“r+” | read&write mode | 파일을 읽고 쓸 수 있다. |
그외
Entry.get()
:엔트리 위젯에 데이터를 읽어올 때 사용한다.
import pickle
일반적인 텍스트 파일이 아닌 리스트나 클래스 같은 자료형을 저장하거나 불러올 수 있게 해준다.
연습문제 ch11-5
infile=open("data.txt","r")
outfile=open("output.txt","w")
total=0
ave=0
for line in infile:
line=line.rstrip()
total+=float(line)
ave=float(total/5)
outfile.write(f"합계={total}\n")
outfile.write(f"평균={ave:2f}")
infile.close()
outfile.close()
연습문제 ch11-7
from tkinter import*
import pickle
window=Tk()
window.geometry("300x200")
w1=Frame(window)
w1.pack(expand=True)
w2=Frame(window)
w2.pack(expand=True)
w3=Frame(window)
w3.pack(expand=True, pady=20)
l1=Label(w1, text="이름:")
l1.pack(side=LEFT)
e1=Entry(w1)
e1.pack(side=RIGHT)
l2=Label(w2, text="전화번호:")
l2.pack(side=LEFT)
e2=Entry(w2)
e2.pack(side=RIGHT)
phonebook={}
fname="phone_book.dat"
phone=" "
name=" "
def add():
phone_file =open(fname, "w")
pickle.dump(phonebook, phone_file)
phone_file.close()
name=e1.get()
phone=e2.get()
if name and phone:
phonebook[name]=phone
print("name,phone이 추가 되었습니다")
def frist():
infile=open(fname,"rb")
phonebook=pickle.load(infile)
infile.close()
global state
state=0
pl=list(phonebook)
e1.delete(0,END)
e1.insert(0,pl[state])
e2.delete(0,END)
e2.insert(0,phonebook[pl[state]])
def next_():
global state
state +=1
pl=list(phonebook)
e1.delete(0,END)
e1.insert(0,pl[state])
e2.delete(0,END)
e2.insert(0,phonebook[pl[state]])
def before():
global state
state-=1
pl=list(phonebook)
e1.delete(0,END)
e1.insert(0,pl[state])
e2.delete(0,END)
e2.insert(0,phonebook[pl[state]])
def last():
global state
state=-1
pl=list(phonebook)
e1.delete(0,END)
e1.insert(0,pl[state])
e2.delete(0,END)
e2.insert(0,phonebook[pl[state]])
def rf():
infile=open(fname,"rb")
phonebook=pickle.load(infile)
print(phonebook)
infile.close()
b1=Button(w3, text="추가", command=add)
b2=Button(w3, text="처음", command=frist)
b3=Button(w3, text="다음", command=next_)
b4=Button(w3, text="이전", command=before)
b5=Button(w3, text="마지막", command=last)
b6=Button(w3, text="파일 읽기", command=rf)
b1.pack(side=LEFT, expand=True)
b2.pack(side=LEFT, expand=True)
b3.pack(side=LEFT, expand=True)
b4.pack(side=LEFT ,expand=True)
b5.pack(side=LEFT, expand=True)
b6.pack(side=LEFT, expand=True)
window.mainloop()
728x90
'[프로그래밍 언어] > python' 카테고리의 다른 글
따라하며 배우는 파이썬과 데이터 과학(개정판)_ch1 문제풀이 (0) | 2024.03.13 |
---|---|
두근두근 파이썬(개정판)_ch 13 객체와 클래스 (1) | 2024.01.28 |
두근두근 파이썬(개정판)_ch10 tkinter로 GUI 만들기 (1) | 2024.01.26 |
두근두근 파이썬(개정판)_ch9 리스트와 딕셔너리 연습문제 1~8번 (2) | 2024.01.25 |
두근두근 파이썬(개정판)_ch9 리스트와 딕셔너리 (2) | 2024.01.25 |