Appia의 IT세상

파이썬[Python] 010 파일 입출력 본문

Python/Python 기본

파이썬[Python] 010 파일 입출력

Appia 2019. 12. 26. 12:59
반응형

모든 프로그래밍을 하면, 관련해서 결과물을 얻기를 바랍니다. , 콘솔 창에 코딩에 대한 결과를 원하든 아니면, 파일로 관련해서 결과를 원하던, 어떤 형태로든 결과가 출력 되길 원할 것입니다. 그래서 오늘은 파일 입출력에 대해서 간단히 살펴보도록 하겠습니다.

 

먼저 저의 경우 파일 입출력을 가장 많이 사용하는 경우는 로그 파일을 만드는 경우입니다. , 외부 데이터를 파싱하여 특정 액션을 실행하는 관련하여 로그 기능을 수행합니다. 그렇게 함으로써, 저의 의도에 따라 동작하는지에 대해서 확인하기 위해서 가장 필요한 기능입니다.

 

파이썬[Python]에서는 파일을 읽어오거나 때는 다음과 같은 구조로 동작하게 됩니다.

 

 

파일 로딩 -> 액션 -> 파일 닫기

 

실제 새로 파일을 만들더라도 새로운 파일을 만들어 로딩하는 형태로 이루어 집니다. 관련해서는 이제 본격적으로 알아보도록 하겠습니다.

 

open 함수

앞서서 봤던 부분에서 파일 로딩부에 해당하는 기능입니다. 부분은 python built-in 함수입니다. 다음과 같은 형태로 로딩을 진행하게 됩니다.

 

fileObject = open(filename, accessMode, buffering)

 

filename - 일거나 쓰고자 하는 파일 이름이 됩니다. 반드시 확장자까지 포함시켜줘야 합니다.

 

accessMode - 파일을 가지고 하고자 하는 액션의 형태를 결정합니다. 파일을 읽거나, 쓰거나, 아니면, 덧붙이기등을 때등의 동작을 명시해줍니다.

 

buffering - 실제 저는 써보지 않은 옵션 중에 하나입니다. 파일에 대해서 Accessing 할때, 버퍼를 할당하여 동작하게 한다는 부분이지만, 실제로는 사용할 일이 없었던 같습니다.

 

accessMode

위의 3단계 중에 액션에 맞는 access mode를 바탕으로 지정하게 됩니다. 관련해서 다음과 같은 옵션들 중에 사용에 알맞게 선택하셔야 합니다. 

 

옵션 기능 설명 파일 유무 커서 위치
r 파일 읽기용으로 열기 파일 존재 필요 맨처음
rb 파일 바이너리 형태로 일기용으로 열기
r+ 파일을 쓰기/읽기 두가지 병행 사용용으로 열기
rb+ 파일을 바이너리 형태로 쓰기/읽기 두가지 병행용으로 열기
w  쓰기 전용 파일 존재시 새로 생성 존재시 Overwrite

wb 파일을 오직 바이너리 형태로 읽고 쓰기
a  파일이 존재하면 끝에서 쓰고, 존재하지 않으면 새로 생성 맨뒤
ab 파일을 바이너리 형태로 뒤에 붙이기,파일이 존재하면 끝에서 쓰고, 존재하지 않으면 새로 생성
a+ 파일 붙이거나, 읽기 모드 파일이 존재하면 끝에서 쓰고, 존재하지 않으면 새로 생성
ab+ 파일을 바이너리 형태로 덧붙이거나, 뒤에 붙이기,파일이 존재하면 끝에서 쓰고, 존재하지 않으면 새로 생성

 

close 함수

앞에서 Access Mode 통하여 액션 모드를 결정하였고, 액션을 진행하였다면 파일을 반드시 닫아줘야합니다. 관련해서는 간단합니다.

 

fileObject.close()

 

다음과 같은 예제를 한번 살펴 보겠습니다. 

fo = open("foo.txt", "wb")
print ( fo.name)
fo.close()

 

그럼 다음과 같은 결과가 나옵니다. 

 

foo.txt

 

지금까지 파일 입출력을 위한 기본 명령어를 봤다면, 이제는 파일에서 텍스트를 읽어오거나, 아니면 텍스트 파일에 텍스트 파일을 써보는 부분에 대해서 살펴보겠습니다. 

 

write 함수

open된 파일에 문자열을 쓸 때 사용하는 명령어 입니다. 다음 부분은 반드시 파일 open이 된 상태에서 진행되어야 합니다.

 

fileObject.write(str)

 

다음과 같은 예제를 한번 살펴 보겠습니다.

 

fo = open("foo.txt", "w")
fo.write( "Appia start lecture.\nThank you\n")
fo.close()

 

아마도 foo.txt 라는 파일이 생성되었을 것고, 관련해서 다음과 같은 테스트가 존재할 것입니다.

 

Python is a great language.
Yeah its great!!

 

read 함수 

open된 파일에서 문자열을 읽어올 때 사용하는 명령어 입니다. 다음 부분은 반드시 파일 open이 된 상태에서 진행되어야 합니다. 

 

fileObject.read(count)

 

 count 부분은 입력은 읽어오고자 하는 텍스트의 byte 사이즈입니다. 만약에 count 부분을 입력하지 않았다면, 파일의 처음부터 끝까지 파일을 읽어 올 것입니다. 다음과 같은 간단한 예를 살펴보겠습니다. 

 

fo = open("foo.txt","r+")
str = fo.read(10)
print(str)
fo.close()

 

그럼 다음과 같은 결과를 얻을 수 있습니다. 

 

Appia sta

 

지금까지 파일을 읽고 쓰는 명령어에 대해서 간단히 살펴 보았습니다. 로깅 정보를 추출하거나, 아니면 파일을 파싱할 때 많이 사용하는 부분입니다. 따라서 관련해서는 반드시 잘 익혀두시길 바랍니다. 실제 이 부분에서 os 관련 모듈에 대한 질문을 하실 수 있다고 생각합니다. 관련해서는 다음 기회에 별도 포스팅으로 준비토록 하겠습니다. 혹, 궁금하시거나 문의 하실 부분이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments