-
반응형
이번 포스팅은 프로그램을 개발하다 보면 아주 많이 사용하는 파일 처리에 대해 알아봅니다.
어떤 텍스트 파일을 열어서 읽거나 쓰기를 하는 프로그램을 개발한다고 가정합니다.
처리 순서는 파일 열기( open ) -> 읽거나 쓰기 ( read 또는 write) -> 닫기 ( close) 순서로 작성해야 합니다.
파일을 열었으면 꼭 close를 해야 합니다.
그렇지 않으면 기껏 파일에 write 한 문장들이 날아 갈수 있습니다.
또한 계속 프로그램을 실행하면 파일 오픈 개수가 너무 많아져서 시스템에 영향을 줄 수 있습니다.
꼭 close() 잊지 마세요.
◆ 파일 열기
파일 열기는 내장함수인 open() 을 사용합니다.
간단한 예제는 아래와 같습니다.
먼저 메모장으로 file_test.txt 라는 파일을 만들어서 아래와 같이 문장을 입력하고 저장하였습니다.
Hello World!
I am Python
I like python아래 예제는 간단하게 파일을 열고 그냥 닫았습니다.
open 함수의 필수 옵션은 파일 경로입니다.
f = open( ‘c:/py_test/file_test.txt’ )
f.close()
위의 예는 메모장으로 미리 텍스트 파일을 만들고 파일을 open 하였습니다.
그럼 없는 파일을 한번 인자로 넣어 봅니다.
파일을 찾을 수 없다고 오류가 발생합니다.
>>> f = open( 'c:/aaa.txt' )
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
f = open( 'c:/aaa.txt' )
FileNotFoundError: [Errno 2] No such file or directory: 'c:/aaa.txt'
>>>
여기서 파일이 없으면 새로 생성할 수는 없을까? 라는 생각이 들 것입니다.
이런 부분은 open() 함수에서 mode 라는 옵션을 사용하여 할 수 있습니다.
mode 옵션은 디폴트 값이 rt 입니다. rt는 읽기 + 텍스트 의 뜻입니다.
그럼 mode 및 open() 함수의 옵션값에 대해 알아봅니다.
open 함수의 옵션들이며 아래 파라메타 값은 디폴트 값입니다.
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
첫번째 인수 file경로만이 필수입니다.
open() 함수 인자 설명입니다. 간단한 설명이니 더 자세한 내용은 파이썬에서 제공하는 매뉴얼을 참고하세요.
▶ file : 파일 경로
▶ mode : 파일이 열리는 모드
'r' : 읽기 용으로 열림 (기본값)
'w' : 쓰기 모드. 파일안에 내용이 있으면 덮어 씀(overwrite)
'x' : 쓰기모드로 새로운 파일생성, 파일이 존재하면 오류 발생
'a' : 쓰기모드, 파일의 끝에 추가(append)하는 경우 추가
'+' : 읽기 및 쓰기를 위한 파일 열기
'b' : 2진 모드(바이너리 모드)
't' : 텍스트 모드 (기본값)
▶ buffering : 버퍼링 정책입니다.
0 : 버퍼링을 사용하지 않습니다. ( 바이너리 모드만 지원 )
1 : 개행 문자를 만날때가지 라인 버퍼링을 수행 ( 텍스트 모드만 지원 )
1 < : 버퍼링 값을 임의의 바이트 수 고정 크기로 직접 지정
파일을 닫지 않으면 버퍼링되어 있는 데이터는 기록되지 않고 소실될 수 있습니다.
▶ encoding : 문자 인코딩 방식 (예: 'utf-8', 'cp949’ 등 )
보통은 utf-8 을 사용합니다.
▶ errors = None, # 선택적 매개변수, 텍스트 모드 시 에러 처리 (예: 'ignore' 에러 무시)
'strict' : 인코딩 에러 발생 시 ValueError 예외
'ignore' : 에러 무시
'replace' : 대체 기호 삽입
'surrogateescape' : U+DC80~U+DCFF 사이의 유니코드 사용자 자유 영역의 잘못된 바이트를 code points로 나타냄
'xmlcharrefreplace' : 파일을 쓸 때 파일에 기록하려는 텍스트 안의 지정된 인코딩에서 지원되지 않는 문자를
&#NNN; 의 XML 문자 참조로 바꿔서 기록
'backslashreplace' : 파일을 쓸 때 현재 인코딩에서 지원되지 않는 문자를 역슬래시(back slash, \)로 시작되는
escape sequence로 바꿔서 기록
▶ newline : 파일을 읽고 쓸 때, 줄 바꿈 처리 ( None, '', '\n', '\r', '\r\n' 중 하나 입력)
None으로 설정되어 있으면, '\n', '\r', '\r\n' 개행 문자로 간주
▶ closefd : True, False. false는 파일이 닫혀도 오픈 상태를 유지
▶ opener : 파일을 여는 함수를 직접 구현 시 사용
파일 열기에 대해 알아보았습니다. w, a, x 모드를 사용하면 새로운 파일을 생성도 합니다.
다음 포스팅에서 open 을 하고 파일을 읽는 방법에 대해 다룹니다.
다음 포스팅도 봐 주세요.
반응형'IT 이야기 공간 > 프로그램 언어' 카테고리의 다른 글
파이썬(Python) 파일 입출력 #3 한줄씩 읽기 (0) 2020.07.06 파이썬(Python) 파일 입출력 #2 읽기 (2) 2020.07.05 파이썬(Python) argparse로 명령행 인자 전달 방법 (0) 2020.07.03 파이썬(Python) 명령행 인자 전달 방법 – sys (0) 2020.07.02 파이썬 함수 인자 전달시 변경되는 객체 – 리스트 등 (0) 2020.07.01