- 파일 읽고 쓰기
1-1)파일 쓰기
f = open("새파일.txt", 'w', encoding='UTF8')
f.close()
파일접근모드 | 설명 |
---|
r | 읽기모드 - 파일을 읽기만 할때 |
w | 쓰기모드 - 파일에 내용을 쓸 때 사용, 기존 내용 삭제하고 다시 작성 |
a | 추가모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용 |
f = open("새파일.txt", 'w', encoding = 'UTF8')
data = "안녕하세요"
f.write(data)
f.close()
1-2) 파일 읽기
파일 읽기 메서드 | 설명 |
---|
readline() | 파일에 접근해서 제일 처음 한줄만 읽어서 저장하고, 커서를 다음 줄로 내리기 |
readlines() | 파일의 모든 내용을 한줄씩 읽어서 한줄씩 리스트에 저장하기 |
read() | 파일 내용 전체를 읽어서 하나의 문자열로 저장하기 |
def read_line():
f = open("새파일.txt", 'r')
line = f.readline()
print(line)
f.close()
def read_lines():
f = open("새파일.txt", 'r')
lines = f.readlines()
print(lines)
for line in lines:
print(line, end="")
f.close()
def read_all():
f = open("새파일.txt", 'r')
line = f.read()
print(line)
f.close()
- QFileDialog 기본 코드 설명
from PySide6.QtWidgets import QFileDialog
dialog = QFileDialog(self)
dialog.setFileMode(QFileDialog.ExistingFile)
dialog.setNameFilter(self.tr("Data Files(*.csv *.xls *.xlsx);; Images(*.png *.jpg);; All Files(*.*)"))
dialog.setViewMode(QFileDialog.Detail)
if dialog.exec():
fileNames = dialog.selectedFiles()
from PySide6.QtWidgets import QFileDialog
dialog = QFileDialog(self)
dialog.setFileMode(QFileDialog.ExistingFiles)
dialog.setNameFilter(self.tr("Data Files(*.csv *.xls *.xlsx);; Images(*.png *.jpg);; All Files(*.*)"))
dialog.setViewMode(QFileDialog.Detail)
if dialog.exec():
fileNames = dialog.selectedFiles()
from PySide6.QtWidgets import QFileDialog
dialog = QFileDialog(self)
dialog.setFileMode(QFileDialog.Directory)
dialog.setViewMode(QFileDialog.Detail)
if dialog.exec():
dirName = dialog.selectedFiles()
- 전체 코드
import sys
import os
from PySide6 import QtGui, QtUiTools
from PySide6.QtWidgets import QApplication, QMainWindow, QFileDialog
loader = QtUiTools.QUiLoader()
class MainView(QMainWindow):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
global UI_MAIN
UI_MAIN = loader.load(resource_path("file_dialog.ui"))
UI_MAIN.btn_file.clicked.connect(self.openfile)
UI_MAIN.btn_files.clicked.connect(self.openfiles)
UI_MAIN.btn_dir.clicked.connect(self.opendir)
UI_MAIN.btn_read.clicked.connect(readfile)
UI_MAIN.btn_write.clicked.connect(writefile)
self.setCentralWidget(UI_MAIN)
self.setWindowTitle("파일 읽고 쓰기")
self.setWindowIcon(QtGui.QPixmap(resource_path("python_logo.png")))
self.resize(600, 500)
self.show()
def openfile(self):
UI_MAIN.te_path.clear()
dialog = QFileDialog(self)
dialog.setFileMode(QFileDialog.FileMode.ExistingFile)
dialog.setNameFilter(self.tr("Data Files(*.csv *.xls *.xlsx);; Images(*.png *.jpg);; All Files(*.*)"))
dialog.setViewMode(QFileDialog.ViewMode.Detail)
if dialog.exec():
fileName = dialog.selectedFiles()
UI_MAIN.te_path.insertPlainText(str(fileName))
def openfiles(self):
UI_MAIN.te_path.clear()
dialog = QFileDialog(self)
dialog.setFileMode(QFileDialog.FileMode.ExistingFiles)
dialog.setNameFilter(self.tr("Data Files(*.csv *.xls *.xlsx);; Images(*.png *.jpg);; All Files(*.*)"))
dialog.setViewMode(QFileDialog.ViewMode.Detail)
if dialog.exec():
fileNames = dialog.selectedFiles()
UI_MAIN.te_path.insertPlainText(str(fileNames))
def opendir(self):
UI_MAIN.te_path.clear()
dialog = QFileDialog(self)
dialog.setFileMode(QFileDialog.Directory)
dialog.setViewMode(QFileDialog.Detail)
if dialog.exec():
dirName = dialog.selectedFiles()
UI_MAIN.te_path.insertPlainText(str(dirName))
def readfile():
path = eval(UI_MAIN.te_path.toPlainText())
f = open(path[0], 'r', encoding='UTF8')
lines = f.readlines()
for line in lines:
UI_MAIN.te_contents.insertPlainText(line)
f.close()
def writefile():
path = eval(UI_MAIN.te_path.toPlainText())
f = open(path[0], 'w', encoding='UTF8')
data = UI_MAIN.te_contents.toPlainText()
f.write(data)
f.close()
UI_MAIN.te_contents.clear()
def resource_path(rel_path):
if hasattr(sys, "_MEIPASS"):
return os.path.join(sys._MEIPASS, rel_path)
return os.path.join(os.path.abspath("."), rel_path)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = MainView()
sys.exit(app.exec())
- 실행화면
- 기본화면
- 단일 파일 선택 버튼 클릭시 화면
- 파일 선택 후 화면
- 읽어오기 버튼 클릭 후 화면
- 내용 작성후 쓰기 버튼 클릭