[python] 09. Path - 02.text 데이터 입출력(08.25)

0

입출력

입출력 (IO)

입출력이란

  • 프로그램이 사용하려는 외부 자원을 연결하여 데이터를 입력 받거나 출력하는 작업을 IO라고 한다.
  • 외부 자원
    • 파일, 원격지 컴퓨터(Network으로 연결된 컴퓨터의 자원), 데이터베이스 등.
  • Stream
    • 입출력 시 데이터의 흐름을 stream 이라고 한다.
  • InputStream
    • Program이 외부로 부터 데이터를 읽어 들이는 흐름.
  • OutputStream
    • Program이 외부로 데이터를 써주는 흐름.


데이터를 읽어오면 input,프로그램에서 데이터의 내용을 작성하면 출력

입출력의 순서

  • 입출력의 순서는 파일 열기(연결) - 데이터 입출력 - 파일 닫기(연결 끊기)로 공통된다.
  • 데이터를 외부 자원에서 불러들이는 것을 '입력'이라고하고, 프로그램에서 외부자원으로 데이터를 작성하는 것을'출력'이라고 한다.
  • 1) fr = open(file, mode='r' /'w',encording = None)로 파일을 열고 (입력 모드- r, 출력 모드- w,(a,x))
    2) 입출력 모드에 맞게 입출력 메소드를 사용하고
    3) .clse()를 이용하여 파일을 닫는다.

파일 열기

파일 열기(연결)

  • open() 함수 사용
    • 연결된 파일과 입출력 메소드를 제공하는 객체(Stream)를 리턴
  • 구문
    • open(file, mode='r', encoding=None)
    • 함수 주요 매개변수
      • file : 연결할 파일 경로
      • mode : 열기 모드
        • mode는 목적, 데이터종류를 조합한 문자열을 사용한다.
      • encoding
        • 텍스트 파일일 경우 인코딩 방식
        • None 또는 생략하면 운영체제의 기본 encoding방식을 따른다.
          • Windows: cp949(한글 변환 방식)/euckr
          • Linux, Unix: utf-8(주로 웹, 다국어 공통이라 주로 사용)
mode타입mode문자설명
목적r읽기 모드-목적의 기본 모드
w새로 쓰기 모드
a이어 쓰기 모드
x새로 쓰기모드-연결하려는 파일이 있으면 Exception발생
데이터종류bbinary 모드
tText모드-text데이터 입출력시 사용

출력 메소드

write(출력할 Data) / writelines(문자열을 가진 컬렉션)
- wirtelines는 리스트,튜플,집합의 원소에 있는 문자열을 한번에 출력
(문자열 이외 타입 출력 불가 - TypeError발생)

os.makedirs("file/test")
#출력메소드 - write(출력 Data) / writelines(문자열을 가진 컬렉션)
    - wirtelines는 리스트,튜플,집합의 원소에 있는 문자열을 한번에 출력(문자열 이외 타입 출력 불가 - TypeError발생)
   
    1. 출력할 파일 연결 - open(경로,모드,인코딩)
    fw = open("./files/test.txt" ,#연결할 파일 경로
    	mode = "wt", encoding = "utf-8")
    
    2. 출력 작업
    fw.write("안녕하세요\n")
    fw.write("반갑습니다\n")
    fw.write("Hello world\n"

	3. 파일과 연결 닫기 
    fw.close()

입력 메소드

  • read() : 문자열(text mode), bytes(binary mode)
    • 연결된 파일의 내용을 한번에 모두 읽어 들인다.
    • 가장 많이 쓰는 방식
  • readline() : 문자열(text mode), bytes(binary mode)
    • 한 줄만 읽는다.
    • text 입력일 경우만 사용가능
    • 읽은 라인이 없으면 빈문자열을 리턴한다.
  • readlines() : 리스트
    • 한번에 다 읽은 뒤 각각의 라인을 리스트에 원소로 담아 반환한다.
  • Input Stream (TextIOWrapper, BufferedReader)는 Iterable 타입
    • for문을 이용한 라인단위 순차 조회할 수 있다.

with block

파일과 입 출력 작업이 다 끝나면 반드시 연결을 닫아야 한다. 매번 연결을 닫는 작업을 하는 것이 번거롭고 실수로 안 닫을 경우 문제가 생길 수 있다. with block은 block을 벗어나면 자동으로 연결을 닫아 준다. 그래서 연결을 닫는 코드를 생략할 수 있다.

  • 구문
with open() as 변수: # `변수`는 open()이 반환하는 Stream객체를 참조한다.
    입출력 작업      # 변수를 이용해 입출력 작업을 처리한다.
# with block을 빠져 나오면 close()가 자동으로 실행된다.



profile
데이터 분석 & 서비스 기획

0개의 댓글

관련 채용 정보