상세 컨텐츠

본문 제목

[개미의 걸음 Python 26차시] 파일 (open, read, write & with키워드)

Python

by IT개미 데이터 2020. 7. 26. 23:23

본문

728x90

파일

텍스트 파일
[Text File]
문자를 기반으로 하는 코드 값이 저장된 파일
텍스트 에디터로 열었을 때 읽을 수 있는 데이터[사람이 쉽게 읽을 수 있음]
큰 용량을 차지
바이너리 파일
[Binary File]
사용자 또는 프로그램이 사용하던 정보나 숫자 값을 특별한 가공없이 그대로 파일에 저장
글자가 아닌 비트 단위로 의미가 있는 파일
jpg, png,mp2,exe 등의 파일 확장자가 바이너리 파일에 속함
텍스트 에디터로 열었을 때 의미를 이해할 수 없는 데이터[사람이 쉽게 읽을 수 없음]
적은 용량을 차지

#인코딩[Encoding]과 디코딩[Decoding]

더보기
Encoding 바이너리[텍스트] 데이터를 텍스트[바이너리] 데이터로 변환해주는 것
Decoding Encoding된 데이터를 반대로 돌리는 것

 

텍스트 파일열기[open함수 사용]

파일 객체 = open(문자열: 파일경로, 문자열: "파일 열기 모드")

파일 열기 모드 종류

모 드 종 류 설    명
생략 r과 동일
r read 모드(읽기 모드)
r+ 읽기/쓰기 겸용
w write 모드(새로 쓰기 모드)
a append 모드(뒤에 이어서 쓰기 모드)
t 텍스트 파일을 처리.(기본값)
b 바이너리 파일 처리

 

 

텍스트 읽고 쓰기

파일 객체.read(문자열) 파일에 텍스트를 읽기 위해 사용하는 함수 
파일 객체.readline( ) 파일의 내용을 한 행씩 읽어올 때 사용하는 함수
파일 객체.readlines( ) 파일의 내용 전체를 읽어서 리스트에 저장하는 함수
파일 객체.write(문자열) 파일에 텍스트를 쓰기 위해 사용하는 함수
파일 객체.writelines(리스트) 파일에 리스트를 쓰기 위해 사용하는 함수
일반적으로 반복문과 함께 사용해 리스트를 형성
  • 한글 파일을 읽어드렸는데 한글이 깨지는 경우, 인코딩을 UTF-8로 지정하여야 함!
  • 텍스트를 사용해 데이터를 구조적으로 표현할 수 있는 방법에는 CSV, XML, JSON 등이 있음

#CSV[Comma Separated Values]

더보기

쉼표로 구분된 값으로 한줄에 하나의 데이터를 나타냄

첫번째 줄에 헤더[header]를 넣어 각 데이터가 무엇을 나타내는지 설명해 줄 수 있음

많은 데이터를 한 줄씩 읽어들일 때는 for 반복문 사용

for 한줄을 나타낸는 문자열 in 파일객체 :
    처리

 

텍스트 파일 닫기[close 함수, with 키워드]

   ① close 함수 사용

파일 객체.close()

   ② with 키워드 사용

with open(문자열:파일경로, 문자열:모드) as 파일 객체:
      문장

프로그램이 길어지면 open( )함수와 close( )함수 사이에 많은 코드가 들어감

조건문과 반복문이 들어가다 보면 파일을 열고 닫지 않는 실수를 할 수 있는데 이를 방지하기 위해 with 키워드 사용

with 키워드를 사용할 경우, 문장이 끝나면 파일이 자동으로 닫김

 

 

파일이름 설정시 유의사항

파일이름을 모듈과 같은 이름으로 저장한 뒤, 모듈을 실행을 하면 TypeError가 발생하므로 모듈과 같은 이름으로 파일을 저장하지 않는다.

  • import 구문은 현재의 폴더에서부터 시작해 import 뒤에 적어 놓은 파일을 찾음
  • 파일이름을 모듈명과 동일하게 저장할 경우 import구문이 모듈이 아닌 동일명의 파일을 읽어들여 문제가 발생

 

 

인터넷의 이미지 저장하기

 아직 모듈에 대해 배우지 않았기 때문에 바이너리 파일과 텍스트 파일을 읽고 쓰는 방식에 초점을 맞추시면 좋을 것 같습니다.

  • urlopen과 read함수를 활용해 인터넷 이미지를 읽어들이면 제일 앞에 바이터리 데이터임을 나타내는 b'가 출력됨
  • 파일을 open할때 "wb"나 "rb"를 적으면 바이너리 형식으로 파일을 읽고 써준다.
    "w"는 바이너리 형식이 아닌 텍스트형식으로 인식하므로 오류가 발생
  • 코드를 실행하면 바이너리 데이터가 출력되고 이미지 파일이 python실행 파일과 같은 폴더에 저장됨

이미지 출처 : https://www.python.org/static/community_logos/python-logo-master-v3-TM-flattened.png

 

728x90

관련글 더보기

댓글 영역