• 티스토리 홈
  • 프로필사진
    소쩍소쩍이
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
소쩍소쩍이
  • 프로필사진
    소쩍소쩍이
    • 분류 전체보기 (89)
      • 파이썬 (18)
        • 문제 및 예제 (8)
      • PySide6 (24)
        • Signal & Slot (6)
        • Layout (8)
        • Model & View (3)
        • File (4)
        • Resource (3)
      • Server - Client (17)
        • GUI 채팅 (1)
      • MySQL (4)
      • 리눅스 (5)
      • 아두이노 (0)
      • 일지 (20)
  • GitHub
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • QTextStream으로 텍스트 파일 다루기
      2026년 06월 08일
      • 소쩍소쩍이
      • 작성자
      • 2026.06.08.:48

      QFile만 사용하면 불편한점

      QFile.write()는 기본적으로 바이트 데이터를 쓰는 방식 -> 문자열을 바로 넣기보다는 인코딩해서 바이트로 바꿔야 함

      불편한 부분 설명
      문자열 변환 문자열을 파일에 쓰기 전에 bytes로 변환해야 합니다.
      코드 가독성 텍스트를 쓰는 코드인데 encode()가 반복되어 흐름이 복잡해 보입니다.
      텍스트 처리 줄 단위 읽기, 전체 읽기 같은 텍스트 중심 작업은 QTextStream이 더 자연스럽습니다.

       

      QTextStream을 사용하면 달라지는 점

      문자열을 더 자연스럽게 파일에 쓸 수 있다.

      텍스트 파일을 다룰 때는 QFile만 사용하는 것보다 QTextStream을 함께 사용하는 편이 더 읽기 쉽고 편하다.

      text_stream_write.py

      from PySide6.QtCore import QFile, QIODevice, QTextStream
       
      file = QFile("stream_test.txt")
       
      if file.open(QIODevice.OpenModeFlag.WriteOnly | QIODevice.OpenModeFlag.Text):
          stream = QTextStream(file)
          stream << "사과\\n"
          stream << "바나나\\n"
          stream << "포도\\n"
          file.close()
       
          print("QTextStream으로 파일 쓰기 완료!")
      else:
          print("파일을 열 수 없습니다.")
          print(file.errorString())

       

      QTextStream 파일 쓰기 과정
      1. QFile로 파일 객체 생성
      2. WriteOnly + Text 모드로 파일 열기
      3. QTextStream 생성
      4. << 연산자로 문자열 저장
      5. close()로 파일 닫기

       

      readAll()

      전체 내용을 한 번에 읽을 때 사용한다.

      from PySide6.QtCore import QFile, QIODevice, QTextStream
      
      file = QFile("stream_test.txt")
      
      if file.open(QIODevice.OpenModeFlag.ReadOnly | QIODevice.OpenModeFlag.Text):
          stream = QTextStream(file)
          content = stream.readAll()
          file.close()
      
          print("전체 내용 : ")
          print(content)
      else:
          print("파일을 찾을 수 없음")
          print(file.errorString())

      파일 전체 내용이 콘솔에 출력되며 파일 크기가 작을 때는 readAll()이 간단하고 편하다.

       

      readLine()

      파일을 한 줄씩 처리하고 싶을 때 사용한다.

      from PySide6.QtCore import QIODevice, QFile, QTextStream
      
      file = QFile("stream_test.txt")
      
      if file.open(QIODevice.OpenModeFlag.ReadOnly | QIODevice.OpenModeFlag.Text):
          stream = QTextStream(file)
          print("줄 단위 읽기 : ")
          
          while not stream.atEnd():
              line = stream.readLine()
              print(f"- {line}")
          file.close()
      else:
          print("파일을 읽을 수 없음")
          print(file.errorString())

      readLine()은 파일을 끝까지 반복하면서 한 줄씩 읽어 출력한다.

       

      메서드 설명
      readAll() 파일 전체 내용을 한 번에 읽고 싶을 때 사용합니다.
      readLine() 파일을 한 줄씩 처리하고 싶을 때 사용합니다.
      atEnd() 더 읽을 내용이 남아 있는지 확인할 때 사용합니다.

       

      QFile.write()와 QTextStream 비교

      구분 QFile.write() QTextStream
      중심 개념 바이트 데이터 쓰기 텍스트 데이터 쓰기와 읽기
      문자열 쓰기 문자열을 encode()로 변환해야 할 수 있습니다. stream << "문자열" 형태로 쓸 수 있습니다.
      전체 읽기 직접 바이트를 읽고 문자열로 바꿔야 할 수 있습니다. readAll()로 전체 텍스트를 읽을 수 있습니다.
      줄 단위 읽기 직접 처리해야 할 부분이 많습니다. readLine()으로 한 줄씩 읽을 수 있습니다.
      추천 상황 바이너리 데이터나 직접 바이트를 다루는 상황 텍스트 파일을 다루는 상황

       

      정리
      1. QFile은 파일을 열고 닫는 역할을 담당한다.
      2. QTextStream은 텍스트를 읽고 쓰기 쉽게 만들어주는 도구이다.
      3. readAll()은 전체 내용을 한 번에 읽을 때 사용한다.
      4. readLine()은 한 줄씩 처리할 때 사용한다.
      5. 텍스트 파일을 다룰 때는 QFile과 QTextStream을 함께 사용하는 것이 가장 편리하다.

      'PySide6 > File' 카테고리의 다른 글

      QFile.open()과 QIODevice 플래그  (0) 2026.06.08
      파일 읽기와 쓰기  (0) 2026.06.08
      회원가입, File 입출력, Json 사용, PW Hash 변환 추가 구현  (0) 2026.06.08
      다음글
      다음 글이 없습니다.
      이전글
      이전 글이 없습니다.
      댓글
    조회된 결과가 없습니다.
    스킨 업데이트 안내
    현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
    ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바