Python(파이썬) 입출력(I/O)

안요한·2022년 5월 18일
0

Python 기초

목록 보기
4/8
  • 파일 액세스
    • 자원 누수 방지를 돕는 with ~ as
    • with문의 비밀 : 컨택스트 매니저
    • open() 함수 다시 보기
  • 텍스트 파일 읽기/쓰기
    • 문자열을 담은 리스트를 파일에 쓰는 writelines()메소드
    • 줄 단위로 텍스트를 읽는 readline()과 readlines() 메소드
    • 문자 집합과 인코딩에 대하여
  • 바이너리 파일 다루기
  • 자원 누수 방지를 돕는 with ~ as
    • open() 함수와 함께 with ~ as문을 사용하면 명시적으로 close 함수를 호출하지 않아도 파일이 항상 닫힘.

      with open(파일이름) as 파일 객체: #파일객체 = open(파일이름)
      	#코드블록
      	#이곳에서 읽거나
        #쓰기를 한 후
      	#그냥 코드를 빠져 나가면 됨. #with 덕분에 close() 하지 않아도 됨
      
      with open('test.txt','r') as file :
          str = file.read()
          print(str)
          #file.close
  • open() 함수의 매개 변수는 모두 8개
    • 하나의 필수 매개변수와 일곱개의 매개변수
    • 반환값은 물론 파일 객체
    • open(file, mode=’r’,buffrering=-1,encoding=None,errors=None,newlin=None,closefd=True,opener=None)
  • file - 파일의 경로를 나타내는 문자열 또는 이미 생성해놓은 파일 객체의 파일 기술자(file 객체의 fileno)
  • mode
    문자의미
    ‘r’읽기용으로 열기(기본값)
    ‘w’쓰기용으로 열기. 이미 같은 경로에 파일이 존재하면 파일내용을 비움
    ‘x’배타적 생성모드로 열기. 파일이 존재하면 IOError 예외 일으킴
    ‘a’쓰기용으로 열기. 단, ‘w’와는 달리 이미 같은 경로에 파일이 존재하는 경우 기존 내용에 덧붙이기를 함
    ‘b’바이너리 모드 - 바이트 단위
    ‘t’텍스트모드(기본값) - 문자열 단위
    ‘+’읽기/쓰기용으로 파일 읽기
  • buffering
    • 0을 입력하면 파일 입출력시에 버퍼링을 수행하지 않으며(바이너리 모드에서만 사용 가능), 1을 입력하면 개행 문자(|n)를 만날 때까지 버퍼링을 하는 라인(line) 버퍼링을 수행(텍스트 모드에서만 사용 가능)
    • 임의의 값으로 직접 버퍼의 크기를 지정하고 싶을 떄는 이 매개변수에 1보다 큰 수를 입력.
  • encoding
    • 텍스트 모드에서만 사용
  • erros
    • 텍스트 모드에서만 사용. 인코딩 디코딩 수행시의 에러 처리 옵션
      errors의미
      ‘strict’인코딩 에러가 발생할 때 ValueError 예외를 일으킵니다. None과 똑같은 효과를 낸다.
      ‘ignore’이름 그대로 에러를 무시한다.
      ‘replace’기형적인 데이터가 있는 곳에 대체 기호(예를 들어 ‘?’)를 삽입한다.
      ‘surrogateescape’U+Dc80 ~ U + DCFF 사이에 있는 유니코드 사용자 자유 영역의 잘못된 바이트를 코드 포인트로 나타낸다.
      ‘xmlcharrefreplace’파일에 기록하려는 텍스트 안에 지정된 인코딩에서 지원되지 않는 문자를 XML문자 참조로 바꿔서 기록
      ‘backslashreplace’이 옵션도 역시 파일에 텍스트를 기록할 때만 사용. 현재 인코딩에서 지원되지 않는 문자를 역슬래쉬로 시작되는 이스케이프 시퀀스로 바꿔 기록
  • 문자 집합 - 텍스트를 기호로 표현한 것
  • 인코딩 - 문자열을 바이트로 변환
  • 디코딩 - 바이트를 문자열로 변환
  • ASCII
    • 미국 정보 교환 표준 부호
    • 7비트만을 이용하여 음아아닌 수에 문자 집합 내의 문자를 할당
    • 52개의 알파벳 대소문자, 10개의 숫자, 32개의 특수문자, 하나의 공백 문자, 33개의 출력 불가능한 제어문자, 모두 128개의 문자를 표현
  • 유니코드
    • 문자 집합 하나로 모든 문자를 표현할 수 있게하는 것이 목적
    • 문자에 부여되는 번호를 코드포인트라고 함
  • UTF
    • 유니코드 변환 인코딩 형식
    • UTF-8은 ASCII와 완벽하게 호환

바이너리 파일 다루기

  • struct 모듈
    • 일반 데이터 형식과 bytes형식 사이의 변환을 수행하는 함수 정의
    • “65” → “65”(텍스트파일) 65→ “A”(텍스트파일)
    • 65 → 65(바이너리 파일 - struct 모듈 통해서 원본 그대로 저장 가능)
profile
걍이렇게돼브렀다리

0개의 댓글