파이썬 with문, 한글파일오류

박은정·2021년 7월 20일
0

with 문

객체를 만들지 않고 파일 입출력한다

사용하는 이유

파일을 입출력할 때마다 객체 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 '

근본적인 원인 및 해결책은 복잡한 설명이라 이후에 다시 도전

텍스트 파일에 저장된 것을 파이썬으로 입력해서 가지고 들어오면
파이썬의 강력한 검색, 찾기, 바꾸기, 가공하기 기능을 무궁무진하게 활용이 가능하다
지금은 예시로 한 문장을 텍스트 파일에 넣었지만, 실제로는 책 한 권 분량일 수도 있다

profile
새로운 것을 도전하고 노력한다

0개의 댓글