0. QFile 학습 목표

→ QFile로 텍스트 파일을 만들고 다시 읽는 가장 간단한 실습을 진행합니다.

더보기

이번 글에서 할 일

이번 글에서는 QFile큐파일을 사용해서, 프로그램 외부의 텍스트 파일에 문자열 데이터 저정 합니다.

처음부터 GUI를 만들지 않습니다.

먼저 콘솔에서 sample.txt 파일을 만들고, 데이터를 저장하고, 그 파일의 내용을 다시 읽어 봅니다.

구분 내용
핵심 개념 QFile로 파일을 열고, QTextStream으로 텍스트를 쓰고 읽는 기본 흐름을 이해합니다.
실습 준비 Python과 PySide6가 설치된 환경에서 콘솔 기준으로 실습합니다.
최종 목표 sample.txt 파일을 만들고, 문자열을 저장하고, 저장된 내용을 다시 읽어서 콘솔에 출력합니다.

이번 단계의 핵심: 처음에는 모든 옵션을 외우려고 하지 말고, QFile 생성 → open() → QTextStream 사용 → close() 흐름과 구조만 익히면 됩니다.

 

1. 파일을 코드로 다루려면 무엇이 필요할까?

→ 파일을 만들고 읽기 위해 필요한 기본 흐름을 먼저 확인합니다.

더보기

1.1 우리가 만들 기능

이번 강의에서 만들 기능은 아주 간단합니다.

먼저 텍스트 파일에 글을 저장합니다.

그 다음 저장된 파일을 다시 읽어서 콘솔에 출력합니다.

단계 설명
1단계 sample.txt 파일을 만듭니다.
2단계 파일 안에 두 줄의 텍스트를 저장합니다.
3단계 저장된 파일을 다시 읽습니다.
4단계 읽은 내용을 콘솔에 출력합니다.

 

1.2 파일 처리의 기본 흐름

파일을 다룰 때는 보통 다음 순서로 진행합니다.

파일 객체 만들기
    ↓
파일 열기
    ↓
파일에 쓰기 또는 파일에서 읽기
    ↓
파일 닫기

QFile을 사용할 때도 같은 흐름입니다.

다만 파일을 열 때는 읽기 모드인지, 쓰기 모드인지 같은 옵션을 함께 지정해야 합니다.

도구 역할
QFile 파일을 열고 닫는 역할을 합니다.
QIODevice 파일을 읽기 모드로 열지, 쓰기 모드로 열지 정합니다.
QTextStream 문자열을 파일에 쓰거나 파일에서 읽기 쉽게 도와줍니다.

문제의 핵심: 파일 처리는 어렵게 보이지만, 실제로는 파일 만들기 → 열기 → 쓰기/읽기 → 닫기 순서만 이해하면 됩니다.

 

2. sample.txt에 글을 쓰고 다시 읽어보기

→ 가장 간단한 코드로 텍스트 파일을 만들고, 저장된 내용을 다시 확인합니다.

더보기

2.1 파일에 텍스트 쓰기

먼저 write_file.py 파일을 만들고 아래 코드를 작성합니다.

이 코드는 sample.txt 파일을 만들고, 그 안에 두 줄의 텍스트를 저장합니다.

# write_file.py

from PySide6.QtCore import QFile, QIODevice, QTextStream

file = QFile("sample.txt")

if file.open(QIODevice.OpenModeFlag.WriteOnly | QIODevice.OpenModeFlag.Text):
    stream = QTextStream(file)
    stream << "첫 번째 줄입니다.\n"
    stream << "두 번째 줄입니다."
    file.close()

    print("파일 쓰기 완료!")
else:
    print("파일을 열 수 없습니다.")

코드를 실행하면 현재 폴더에 sample.txt 파일이 만들어집니다.

파일 안에는 아래와 같은 내용이 저장됩니다.

첫 번째 줄입니다.
두 번째 줄입니다.

 

2.2 파일에서 텍스트 읽기

이번에는 방금 만든 sample.txt 파일을 다시 읽어 봅니다.

read_file.py 파일을 만들고 아래 코드를 작성합니다.

# read_file.py

from PySide6.QtCore import QFile, QIODevice, QTextStream

file = QFile("sample.txt")

if file.open(QIODevice.OpenModeFlag.ReadOnly | QIODevice.OpenModeFlag.Text):
    stream = QTextStream(file)
    content = stream.readAll()
    file.close()

    print("파일 내용:")
    print(content)
else:
    print("파일을 읽기 모드로 열 수 없습니다.")

코드를 실행하면 콘솔에 파일 내용이 출력됩니다.

파일 내용:
첫 번째 줄입니다.
두 번째 줄입니다.

 

2.3 쓰기와 읽기 차이 확인

쓰기 코드와 읽기 코드는 거의 비슷합니다.

가장 큰 차이는 파일을 여는 모드입니다.

구분 사용 코드
파일 쓰기 QIODevice.OpenModeFlag.WriteOnly | QIODevice.OpenModeFlag.Text
파일 읽기 QIODevice.OpenModeFlag.ReadOnly | QIODevice.OpenModeFlag.Text
텍스트 쓰기 stream << "문자열"
텍스트 읽기 stream.readAll()

핵심 확인: 파일에 쓸 때는 WriteOnly, 파일에서 읽을 때는 ReadOnly를 사용합니다. Text는 텍스트 파일을 다룰 때 함께 붙이는 옵션입니다.

 

3. QFile 코드 흐름 자세히 살펴보기

→ QFile 코드가 어떤 순서로 실행되는지 한 단계씩 분석합니다.

더보기

3.1 파일 쓰기 흐름

먼저 파일 쓰기 코드는 다음 순서로 실행됩니다.

QFile 객체 생성
    ↓
WriteOnly + Text 모드로 파일 열기
    ↓
QTextStream 생성
    ↓
문자열을 파일에 쓰기
    ↓
파일 닫기
    ↓
완료 메시지 출력

코드에서 중요한 줄은 아래와 같습니다.

코드 역할
file = QFile("sample.txt") sample.txt 파일을 다루기 위한 QFile 객체를 만듭니다.
file.open(...) 실제로 파일을 엽니다.
QTextStream(file) 파일에 문자열을 쉽게 쓰기 위한 스트림을 만듭니다.
stream << "문자열" 파일에 텍스트를 씁니다.
file.close() 파일 사용을 끝내고 닫습니다.

 

3.2 파일 읽기 흐름

파일 읽기 코드도 구조는 거의 같습니다.

다만 파일을 여는 모드와 스트림 사용 방식이 다릅니다.

QFile 객체 생성
    ↓
ReadOnly + Text 모드로 파일 열기
    ↓
QTextStream 생성
    ↓
readAll()로 전체 내용 읽기
    ↓
파일 닫기
    ↓
콘솔에 내용 출력
코드 역할
ReadOnly 파일을 읽기 전용으로 엽니다.
Text 텍스트 파일 모드로 엽니다.
stream.readAll() 파일의 전체 내용을 문자열로 읽습니다.
print(content) 읽은 내용을 콘솔에 출력합니다.

 

3.3 헷갈릴 수 있는 부분

처음 배울 때는 QFile과 QTextStream의 역할이 헷갈릴 수 있습니다.

둘은 같은 역할을 하는 것이 아닙니다.

구분 쉽게 이해하기
QFile 파일 문을 열고 닫는 역할입니다.
QTextStream 열린 파일 안에 글자를 쓰거나 읽는 통로입니다.
open() 파일에 실제로 접근하기 시작하는 코드입니다.
close() 파일 사용을 끝내는 코드입니다.

주의할 점: QFile("sample.txt")만 작성했다고 파일이 열린 것은 아닙니다. 실제 파일 접근은 open()을 호출할 때 시작됩니다.

 

4. Python open()과 QFile 비교하며 정리하기

→ Python 내장 open() 방식과 QFile 방식을 비교하고 핵심을 정리합니다.

더보기

4.1 Python open()과 QFile 비교

Python에서는 기본적으로 open() 함수로 파일을 다룰 수 있습니다.

그런데 Qt 기반 프로그램을 만들 때는 QFile을 사용하면 나중에 GUI 기능과 연결하기 쉽습니다.

구분 Python open() QFile
사용 목적 일반 Python 파일 처리에 사용합니다. Qt 프로그램 안에서 파일을 다룰 때 사용합니다.
쓰기 방식 file.write("문자열") 형태를 사용합니다. QTextStream과 함께 stream << "문자열" 형태를 사용할 수 있습니다.
GUI 연결 직접 연결 코드를 작성해야 합니다. QFileDialog, QTextEdit 같은 Qt 위젯과 자연스럽게 연결하기 좋습니다.
이번 강의 역할 비교 대상으로만 봅니다. 앞으로 GUI 파일 처리 기능의 기본 도구로 사용합니다.

 

4.2 최종 정리

이번 글에서는 QFile을 사용해서 텍스트 파일을 쓰고 읽는 가장 간단한 실습을 진행했습니다.

핵심 내용 정리
문제 파악 파일을 다룰 때는 열기, 쓰기/읽기, 닫기 순서가 필요하다는 것을 확인했습니다.
문제 해결 QFile과 QTextStream으로 sample.txt 파일에 텍스트를 쓰고 다시 읽었습니다.
코드 분석 QFile은 파일을 열고 닫고, QTextStream은 텍스트를 쓰고 읽는 역할을 한다는 것을 확인했습니다.
다음 단계 다음 강의에서는 QFile.open()과 QIODevice 플래그를 더 자세히 살펴봅니다.

기억할 문장: QFile은 파일을 열고 닫는 도구이고, QTextStream은 열린 파일에 텍스트를 쓰고 읽는 도구입니다.

 

참고. 공식 문서로 확인하기

→ QFile, QIODevice, QTextStream의 자세한 내용은 공식 문서에서 확인합니다.

더보기

참고 문서

이번 글에서 사용한 클래스는 PySide6의 QtCore 모듈에 포함되어 있습니다.

참고: 이번 강의에서는 가장 간단한 파일 쓰기와 읽기만 실습했습니다. 다음 강의에서는 open()에 들어가는 ReadOnly, WriteOnly, Append, Text 같은 플래그를 자세히 비교합니다.