# write.py
from PySide6.QtCore import QFile, QIODevice, QTextStream
file_path = "example.txt"
# 파일이 없는 경우에만 새로 생성
if not QFile.exists(file_path):
file = QFile(file_path)
# 쓰기 전용 + 텍스트 모드로 열기
if file.open(QIODevice.WriteOnly | QIODevice.Text):
# QTextStream 생성 (텍스트 쓰기 도우미)
stream = QTextStream(file)
# 필요하면 인코딩 지정 가능 (환경에 따라 생략 가능)
# stream.setEncoding("UTF-8")
# 파일에 한 줄씩 쓰기 (한글 메시지 포함)
stream << "안녕하세요, 이것은 첫 번째 테스트 줄입니다.\n"
stream << "이 줄은 두 번째 줄입니다."
file.close()
print(f"'{file_path}' 파일이 생성되고 내용이 저장되었습니다.")
else:
print("파일을 쓰기 모드로 열 수 없습니다.")
else:
print(f"'{file_path}' 파일이 이미 존재합니다. 새로 생성하지 않습니다.")
QFile.exists(path) → 파일 존재 여부를 간단히 확인할 수 있는 정적 메서드
file.open(QIODevice.WriteOnly | QIODevice.Text) → 텍스트 쓰기 모드로 파일 열기
QTextStream → stream << "문자열" 형식으로 파일에 텍스트를 쉽게 쓸 수 있게 도와주는 클래스
# read.py
from PySide6.QtCore import QFile, QIODevice, QTextStream
file_path = "example.txt"
if QFile.exists(file_path):
file = QFile(file_path)
# 읽기 전용 + 텍스트 모드로 열기
if file.open(QIODevice.ReadOnly | QIODevice.Text):
stream = QTextStream(file)
# 파일 전체 읽기
content = stream.readAll()
print("파일 내용은 다음과 같습니다:")
print(content)
file.close()
else:
print("파일을 읽기 모드로 열 수 없습니다.")
else:
print(f"'{file_path}' 파일이 존재하지 않습니다.")
readAll() → 파일 전체 내용을 한 번에 문자열로 반환
QIODevice.ReadOnly | QIODevice.Text → 읽기 + 텍스트 모드로 열기
if QFile.exists(file_path) → 없는 파일을 열려고 할 때의 오류를 미리 방지
# copy.py
from PySide6.QtCore import QFile
src_path = "example.txt"
dst_path = "example_copy.txt"
if QFile.exists(src_path):
src_file = QFile(src_path)
# 인스턴스 메서드 사용 예시
if src_file.copy(dst_path):
print(f"'{src_path}' 파일이 '{dst_path}' 로 복사되었습니다.")
else:
print("파일 복사에 실패했습니다. 같은 이름의 파일이 이미 있을 수도 있습니다.")
else:
print(f"원본 파일 '{src_path}' 이(가) 존재하지 않습니다.")
QFile.copy(원본, 대상) 은 정적 메서드 버전도 있고 src_file.copy(대상) 은 인스턴스 메서드 버전입니다.
대상 파일이 이미 존재하면 실패하는 경우가 있으니, 진짜 앱에서는 QFile.exists(dst_path) 체크 후 삭제/덮어쓰기 여부를 사용자에게 물어보는 식으로 확장 가능