객체를 만들지 않고 파일 입출력한다
파일을 입출력할 때마다 객체 f를 만드는 것이 가끔은 문제를 일으킨다
1. 한꺼번에 여러 파일을 열어야 할 때 객체 이름을 자꾸 기억해 내야만 한다
2. 여러 파일을 열고 닫다 보면 f.open()
으로 파일을 열어 놓고 f.close()
으로 닫지 않은 경우가 생긴다
with 문
기본형태with open(파일 이름, 파일 열기 모드) as f:
f에 수행할 명령
f.close()
로 파일 객체를 매번 닫아야 하는 불편이 사라진다
if 문
이나 def 문
처럼 들여쓰기 규칙을 정확하게 지켜야 한다
이런 불편함으로 open() 함수
를 쓰는 경우도 있다.
with 문
기본예제>>> with.open('test.txt', 'w') as f:
f.write('오늘 나는 학교에 갔습니다.')
15
파이썬에서 파일을 열 때, 특히 파일을 불러올 때 파일의 코덱이 오류를 일으키는 경우가 있다
파일을 불러올 때 코덱 문제로 오류가 발생한다
사실 파일을 입출력할 때 매우 빈번하게 발생하는 문제이다
특히 한글로 된 문서를 입출력할 때 이러한 오류가 자주 발생한다
>>> import os, re # 필요한 명령어는 처음부터 입포트 한다
>>> os.chdir(r'C:\User\user\python_data')
>>> f = open('한글파일.txt', 'r')
>>> scropt101 = f.read()
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
script101 = f.read()
UnicodeDecodeError: 'cp949' codec can't decode byte oxbf in position 2:illegal multi-byte sequence
codecs
모듈로 쉽게 오류 해결codecs
모듈 임포트
이 모듈은 기본적으로 내장되어 있어 pip
등을 따로 설치하지 않아도 된다
파일을 열 때마다 utf-8로 읽으라는 명령어를 넣어주면 된다
>>> import codecs
>>> f = codecs.open('한글파일.txt', 'r', 'utf-8')
>>> f.read()[:10]
'\ufeff201. The '
근본적인 원인 및 해결책은 복잡한 설명이라 이후에 다시 도전
텍스트 파일에 저장된 것을 파이썬으로 입력해서 가지고 들어오면
파이썬의 강력한 검색, 찾기, 바꾸기, 가공하기 기능을 무궁무진하게 활용이 가능하다
지금은 예시로 한 문장을 텍스트 파일에 넣었지만, 실제로는 책 한 권 분량일 수도 있다