파이썬 심화(파일 입/출력)

오상윤·2022년 12월 30일
0

파이썬 심화

목록 보기
6/9

파일 입/출력

읽기/쓰기와 인코딩

  • file = open() : 파일 열기
  • file = read() : 파일 읽기
  • file = write() : 파일 쓰기
  • file = close() : 파일 닫기

open()

  • open(파일의 경로, 파일 열기 방식, 인코딩 방식)
  • 파일 열기 방식
    • 'r' : 읽기용
    • 'w' : 쓰기용(이미 파일이 존재하면 파일 내용을 지워버림)
    • 'a' : 쓰기용으로 열기(파일이 존재할 경우 내용 덧붙이기)

ASCII, 아스키코드

  • 미국 정보 교환 표준 부호
  • 7비트만을 이용하여 음이아닌 수(0~127)에 문자를 할당

유니코드

  • 문자 집합 하나로 모든 문자를 표현할 수 있게 하는 것이 목적
  • 초기에는 전세계의 언어별 문자들을 2바이트 안에서 영역을 나눠 할당
  • 누락된 문자와 기호를 계속 추가하다 보니 2바이트를 넘어서게 됨

UTF

  • 유니코드 변환 인코딩 형식
  • UTF-8은 코드포인트의 크기에 따라 1바이트에서부터 4바이트까지 가변폭으로 인코딩하므로 1바이트로 표현 가능한 ASCII와 완벽하게 호환
  • UTF-8 인코딩 방식으로 저장된 문서는 유니코드를 알지 못하는 시스템에서도 사용 가능

파일 경로 설정

  1. 절대 경로
  • 파일의 경로를 루트(가장 기본이되는 폴더)부터 직접 기재하는 방식
    • 윈도우의 경우 폴더 구분 기호로 \를 사용하고 리눅스나 맥 등은 /를 사용.
    • \는 escape문자이기 떄문에 \\로 입력해야함.
  1. 상대 경로
  • 파일의 경로를 현재 위치로부터 상대적으로 입력
  • ./ : 현재 폴더를 의미 (생략해도 무방)
  • ../ : 상위 폴더를 의미

파일 읽는법

  1. read()함수 : 파일 전체 내용을 문자열로 변환
file = open('text.txt', 'r')  
text = file.read()  
file.close()  
  1. readlines()함수 : 파일의 모든 줄을 읽고 각 줄을 요소로 갖는 리스트 반환
file = open('text.txt', 'r')  
text = file.readlines()  
file.close()  
  1. readline()함수 : 파일의 첫 줄을 읽고 문자열 반환. 재호출시 그 다음 줄의 문자열 반환
file = open('test.txt', 'r')  
line1 = file.readline()  
line2 = file.readline()  
file.close()  
  1. For 문으로 읽기 : for 제어문으로 읽을 시 줄별로 문자열로 읽어서 반환
file = open('test.txt', 'r')  
for i in file:  
    print(i)  
file.close()  

파일 쓰는법

file = open('test.txt', 'w')
file.write("새로운 줄")
file.close()

with ~ as

  • open()함수와 함께 with ~ as문을 사용하면 명시적으로 close()함수를 호출하지 않아도 파일이 항상 닫힘
with open('test.txt') as file:
text = file.read()
print(text)

직렬화

  • 객체를 연속적인 데이터로 변환하는 것
  • 객체를 컴퓨터에 저장하기 위해서는 직렬화가 필요

pickle

  • 파이썬에서 객체를 직렬화하는 모듈
    • pickle.dump(출력할 객체, 파일객체) : 파일객체에 출력할 객체를 저장
    • pickle.dumps(출력할 객체) : 출력할 객체를 바이트 형태로 반환
    • pickle.load(파일객체) : pickle을 통해 바이트화 되어 저장된 파일객체를 다시 원본의 모습으로 반환
    • pickle.loads(바이트 객체) : pickle을 통해 바이트화 된 객체를 다시 원본의 모습으로 반환
with open('test.txt','wb') as f:
pickle.dump([1,2,3,4],f)

json

  • pickle과는 또 다른 직렬화 방식
  • json으로 직렬화 할 수 있는 객체는 한정되어 있음
import json
with open('test.txt','w') as f:
json.dump([1,2,3,{'4':5,'6':7}],f
profile
가보자가보자~

0개의 댓글