반응형
SMALL
오늘은 파이썬(Python)의 파일 입출력에 대해 알아보겠습니다
앞서 학습하였던 프로그램에서 모든 데이터(Data)는 프로그램이 종료되면 사라져버렸습니다
매번 이런식이라면 곤란하겠죠..-_-
그래서 어딘가에 저장을 해야하는데 그 방법 중에 하나가 파일에 저장하는 것입니다
아래의 표는 파이썬의 기본적인 파일 모드입니다
파일 모드 | 모드명 | 설명 |
"r" | 읽기모드(read mode) | 파일을 처음부터 읽는다 |
"w" | 쓰기모드(write mode) | 파일이 없다면 생성하고 쓰며, 파일이 있다면 기존 내용은 지우고 새로 쓴다 |
"a" | 추가모드(append mode) | 파일이 없다면 생성하고 쓰고, 파일이 있다면 기존 내용에 이어쓴다 |
"r+" | 읽기/쓰기 모드 | 파일에 읽고 쓰기가 모두 가능하다. 모드를 변경하려면 seek() 함수가 호출되어야 한다 |
파일을 실제로 읽고 쓸 수 있는 함수 등은 간단한 메모장을 만들어 보면서 익히도록 하겠습니다
# 파이썬 2.7.10
from Tkinter import *
import tkFileDialog as filedialog
import tkMessageBox as messagebox
def open():
file = filedialog.askopenfile(parent=window, mode='r')
if file != None:
lines = file.read()
text.insert('1.0', lines) #1번째 행, 0번째 글자를 의미
file.close()
def save():
file = filedialog.asksaveasfile(parent=window, mode='w')
if file != None:
lines = text.get('1.0', END+'-1c') #END+'-1c' : 끝 문자 하나 제거
file.write(lines)
file.close()
def exit():
if messagebox.askokcancel("Quit", "Do you want to quit?"):
window.destroy()
def about():
label = messagebox.showinfo("About", "Basic Memo")
window = Tk()
menu = Menu(window)
filemenu = Menu(menu, tearoff=0)
filemenu.add_command(label="Open", command=open)
filemenu.add_command(label="Save", command=save)
filemenu.add_command(label="Exit", command=exit)
menu.add_cascade(label="File", menu=filemenu)
helpmenu = Menu(menu, tearoff=0)
helpmenu.add_command(label="About", command=about)
menu.add_cascade(label="Help", menu=helpmenu)
window.config(menu=menu)
text = Text(window, height=30, width=80)
text.pack()
window.mainloop()
지금까지 간단한 메모장을 만들어보면서 파이썬(Python)의 파일 입출력에 대해 알아보았습니다
하다보니 파이썬(Python)의 버전이 2.x 일 때와 3.x 일 때의 파일오픈다이얼로그와 메세지박스 등이 달랐네요-_-
혹시 하실 때 버전 잘 확인해보시고 진행하시길...
이번엔 번외로 파이썬(Python)의 딕셔너리(Dictionary)와 같은 객체를 파일에 쓰고 읽는 법을 학습해보겠습니다
#객체를 파일에 읽고 쓰기
#Python 2.7.10
import tkFileDialog as filedialog
import pickle #객체를 파일 입출력해주는 모듈
option = { "VOLUME" : 10, "SPEED" : "HIGH" }
file = filedialog.asksaveasfile(mode='wb') #binary
pickle.dump(option, file) #dump()함수를 이용하여 객체를 압축
file.close()
file = filedialog.askopenfile(mode='rb')
obj = pickle.load(file)
print(obj)
file.close()
이상으로 오늘의 학습을 마치겠습니다-_-
반응형
LIST
'Python' 카테고리의 다른 글
[Python] 아나콘다(Anaconda) 설치 (0) | 2019.09.09 |
---|---|
[Python] Tk Interface(tkinter) 알아보기_2 (0) | 2019.09.05 |
[Python] Tk Interface(tkinter) 알아보기_1 (0) | 2019.09.04 |
[Python] 순환(Recursion)호출을 이용한 Fractal 프로그램 (0) | 2019.09.03 |
[Python] 함수(Function)를 이용한 간단한 로또(Lotto)추첨 프로그램 (0) | 2019.08.27 |