Python

[Python] 간단한 메모장 만들기

구루싸 2019. 9. 5. 00:35
반응형
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