파일 입출력
1단계: 파일열기
읽기용: 변수명 = open('파일명','r')
쓰기용: 변수명 = open('파일명','w')
2단계: 파일처리
3단계: 파일 닫기
- 1단계에서 open() 함수로 연 변수명: 변수명.close();
# 텍스트 파일 입출력
inFp = None #입력파일
inStr = "" #읽어 온 문자열
inFp = open('C:/Temp/data1.txt', 'r') #파일 열기
inStr = inFp.readline() # readline(): inFp로 열린 파일에서 한 행 읽어 inStr에 저장
print(inStr, end='') # 화면에 출력
inStr = inFp.readline()
print(inStr, end='')
inStr = inFp.readline()
print(inStr, end='')
inFp.close()
# 파일의 내용을 한 행씩 출력
inFp = None
inList, inStr = [].''
inFp = open('C:/Temp/data1.txt','r')
inList = inFp.readline()
for inStr in inList:
print(inStr, end='')
inFp.close()
# 한 행씩 파일에 쓰기
# 한 행씩 파일에 쓰기
outFp = None
outStr = ''
outFp = open('C:/Temp/data2.txt','w') # 쓰기 모드 w 불러오기
while True:
outStr = input('내용 입력: ') # 파일에 쓸 내용 입력
if outStr != '': # 입력한 글자가 비어 있지 않으면 9행에서 입력한 내용을 파일에 씀
outFp.writelines(outStr + '/n') #outStr만 파일에 쓰면 줄바꿈X
else:
break # 입력한 글자가 비어 있으면 10-11행에서 무한 반복 종료
outFp.close() #파일 닫기
print('정상적으로 파일에 씀') #메세지 출력
# Copy 명령어
inFp, outFp = None, None
inStr = ''
inFp = open('C:/Windows/win.ini','r')
outFp = open('C:/Temp/data3.txt','w')
inList = inFp.readlines()
for inStr in inList:
outFp.writelines(inStr)
inFp.close()
outFp.close()
print('파일이 정상적으로 복사되었음 ')
# readline() 과 readlines()
readline(): 한번에 한 행씩 읽어 들여 모든 행을 처리하려면 반복문을 통해 계속 읽어야 함, 용량이 수백MB가 넘으면 사용
readlines(): 파일로 한번에 읽어 리스트에 저장
# 이진파일의 복사
inFp, outFp = None, None
inStr =''
inFp =open('C:/Windows/notepad.exe','rb') # 읽기모드
outFp = open('C:/Temp/notepad.exe','wb') # 쓰기모드
while True: # 파일의 끝까지 한 바이트씩 읽어서 한 바이트씩 파일에 쓰기
inStr = inFp.read(1)
if not inStr:
break
outFp.write(inStr)
inFp.close()
outFp.close()
print('이진 파일이 정상적으로 복사되었음')
# 실습: 파일 탐색기 만들기
- 윈도우의 파일 탐색기와 기능이 비슷한 프로그램 만들기
from tkinter import *
import os
import os.path
##함수 선언 부분##
def clickListBox(evt) :
global currentDir, searchDirList
if (dirListBox.curselection() == ()): # 다른 리스트 박스 클릭할 때 무시
return
dirName = str(dirListBox.get(dirListBox.curselection()))
if dirName == '상위폴더' :
if len(searchDirList) == 1 : ## 상위폴더 클릭, 현재 C:\\이면 무시
return
searchDirList.pop() # 상위 폴더 이동이라 마지막 검색 폴더 (현재 폴더)
else :
searchDirList.append(currentDir + dirName + '\\') # 검색 리스트에 클릭한 폴더 추가
fillListBox()
def fillListBox() :
global currentDir, searchDirList, dirLabel, dirListBox, fileListBox
dirListBox.delete(0, END)
fileListBox.delete(0,END)
dirListBox.insert(END, "상위폴더")
currentDir = searchDirList[len(searchDirList) -1]
dirLabel.configure(text = currentDir)
folderList = os.listdir(currentDir)
for item in folderList :
if os.path.isdir(currentDir + item) :
dirListBox.insert(END, item)
elif os.path.isfile(currentDir + item) :
fileListBox.insert(END, item)
## 전역 변수 선언 부분
window = None
searchDirList = ['C:\\']
currDir = 'C:\\'
dirLabel, dirListBox, fileListBox = None, None, None
# 메인 코드 부분
window = Tk()
window.title("폴더 및 파일 목록 보기")
window.geometry('300x500')
dirLabel = Label(window, text = currDir)
dirLabel.pack()
dirListBox = Listbox(window)
dirListBox.pack(side = LEFT, fill = BOTH, expand = 1)
dirListBox.bind('<<ListboxSelect>>', clickListBox)
fileListBox = Listbox(window)
fileListBox.pack(side = RIGHT, fill = BOTH, expand =1)
fillListBox()
window.mainloop()
'Data Analysis > Python Basic' 카테고리의 다른 글
[파이썬] 자동차 클래스를 파이썬 코드로 생성 (0) | 2023.06.03 |
---|---|
[파이썬] 기말고사 대비 (3) | 2023.06.02 |
[파이썬] 문자열 기초 코드 (0) | 2023.05.07 |
[파이썬] 함수 기본 (0) | 2023.05.07 |
[파이썬] 중간고사 대비 (0) | 2023.04.22 |