[파이썬데이터분석] 파일과 운영체제

imacusirius·2021년 11월 11일
0

파이썬데이터분석

목록 보기
12/12

파일과 운영체제

  • 파이썬에서 파일을 다룰 때는 내장 함수인 open을 이용하여 파일의 상대 경로나 절대 경로를 넘겨주어야 함
  • 기본적으로 파일은 읽기 전용 모드인 'r'로 열림
  • 파일 핸들 f를 리스트로 생각할 수 있고, 파일의 매 줄을 순회할 수 있음
  • 파일에서 읽은 줄은 줄끝(EOL) 문자가 그대로 남아 있음
    • 따라서 이를 제거하는 코드를 종종 볼 수 있음
    • ex) x.rstrip()
  • 파일 객체를 생성하기 위해 open을 사용했다면, 작업이 끝났을 때는 close를 이용하여 명시적으로 닫아 주어야 함
  • 파일을 닫으면 해당 자원을 운영체제로 되돌려줌
  • with문을 사용하면 파일 작업이 끝났을 때 필요한 작업을 쉽게 처리할 수 있음
    • with open(path) as f:
    • 위와 같이 작성하면 with 블록이 끝나는 시점에서 파일 핸들 f를 자동으로 닫아 줌
  • 만약 파일을 f = open(path, 'w')로 연다면, 파일이 새롭게 생성되고 파일의 내용을 새로운 내용으로 덮어 쓰게 됨
  • 'x' 모드는 쓰기 목적으로 파일을 새로 생성하지만, 이미 해당 파일이 존재한다면 실패함
  • 파일을 읽을 때는 주로 read, seek, tell 메서드를 사용함
    • read는 해당 파일에서 특성 개수만큼의 문자를 반환하고, 읽은 바이트만큼 파일 핸들의 위치를 옮김
    • seek은 핸들의 위치를 지정한 바이트의 위치로 설정해 주는 메서드이고,
    • tell은 현재 핸들의 위치를 알려 줌

★ 사용이 끝나면 항상 close()를 이용하여 파일을 닫아 주어야 함

바이트와 유니코드

  • 파이썬 파일은 파이썬 문자열을 다루기 위한 텍스트 모드를 기본으로 함
    • 파일 모드에 'b'를 추가해 열 수 있는 이진 모드와 다름
  • UTF-8은 가변길이 유니코드 인코딩이므로, 파일에서 일부 문자를 읽도록 한다면 파이썬은 파일에서 필요한 만큼의 바이트(10~40 bytes)를 읽고, 10문자로 디코딩함
    • 파일을 'rb' 모드로 열었다면 read는 딱 10바이트만 읽어 올 것
  • 텍스트 인코딩에 따라 읽어 온 바이트를 str 객체로 직접 디코딩할 수도 있음
    • 온전한 유니코드 문자로 인코딩되어 있을 경우에만 가능
  • open 메서드에 encoding 옵션을 지정한 텍스트 모드에서는 유니코드 인코딩을 다른 인코딩으로 쉽게 변경할 수 있는 방법을 제공함
  • 이진 모드가 아닐 경우에는 열려진 파일에 대해 seek 메서드를 호출할 때 주의해야 함
    • 파일 위치를 유니코드 문자를 정의하는 바이트 사이로 지정한다면 뒤이은 읽기에서 에러가 발생함

0개의 댓글