본문 바로가기
Python/파이썬 기초

파일 읽기(read), 쓰기(write), with구문- 파이썬 기초(23)

by 콩돌 2019. 1. 1.
반응형

참고 자료

https://docs.python.org/ko/3/tutorial/inputoutput.html



파이썬 버전 3.7 기준



파이썬에서의 파일 입출력


본 포스팅에서 다루는 내용은 다음과 같다.

파일 읽기(read, readline, readlines), 쓰기(write), with 구문 등.



파일 열기(open)

기본적으로 파일을 읽고 출력하기 위해 파일을 열어야 하는데 이때 open 함수가 사용되며, open 함수에 대한 설명은 아래 링크에 설명되어있다.

https://kongdols-room.tistory.com/38



파일 읽기

파이썬은 불러온 텍스트파일을 읽기위해 read(), readline(), readlines()와 같은 함수를 제공한다.


파일 읽기를 위한 open() 함수의 설정

  ○ 위 링크에 자세히 설명되어있긴 하지만 여기서 다시한번 간단히 설명한다.

  ○ 파일의 경로(파일이 작업영역(working place)에 있을 경우는 경로 생략 가능)와 열 파일명을 입력하고, 

  ○ 파일명 뒤에는 'r'을 입력하면 된다.
    ▷ 'r'은 읽기모드로 파일을 연다는 의미이다.
    ▷ 키워드 인자로 mode='r'로 입력해도 된다.
    ▷ 바이너리 파일을 열 경우에는 'rb'로 입력하면된다.

  ○ open() 함수를 통해서 연 파일은 사용한 뒤 close 메서드를 통해 닫아주어야 한다.


파일 읽기를 위한 open()함수 예제)

f = open('c:\directory path\filename.txt', 'r')

f.close()


예제파일

  ○ 파일 읽기 예제를 아래와 같이 제시한다.


exam.txt 파일 내용)

Life is too short.

So, you need Python.

Python is easy,

and useful on many fields.


read(size)

  ○ read(size) 함수는 파일을 문자열 형태로 불러온다.

    ▷ 리스트의 pop() 메서드와 유사하게 함수를 사용할 때마다 결과를 불러오고 불러온 데이터는 폐기된다.

    ▷ 불러올 데이터가 없을 시에는 빈 문자열 ''를 출력한다.

  ○ size는 불러올 문자열의 크기를 의미한다.

    ▷ 입력하지 않을 경우 파일 전체의 문자열을 불러온다.


read()함수 예제)

In[9]: f = open('exam.txt', 'r')

In[10]: fileread = f.read()

In[11]: fileread

Out[11]: 'Life is too short.\nSo, you need Python.\nPython is easy,\nand useful on many fields.'

In[12]: fileread = f.read()

In[13]: fileread

Out[13]: ''

In[14]: f.close()


read()함수 예제)

In[15]: f = open('exam.txt', 'r')

In[16]: fileread = f.read(5)

In[17]: fileread

Out[17]: 'Life '

In[18]: fileread = f.read(5)

In[19]: fileread

Out[19]: 'is to'

In[20]: fileread = f.read(5)

In[21]: fileread

Out[21]: 'o sho'

In[22]: f.close()


readline() 함수

  ○ readline()함수는 read() 함수와 유사하게 문자열로 불러오지만 size지정이 없는 대신 한 줄씩 불러온다는 차이점이 있다. 

  ○ read() 함수와 마찬가지로 함수를 작동시킬때마다 다음 결과를 불러오며 기조네 불러와진 데이터는 폐기된다.

readline()함수 예제)

In[23]: f = open('exam.txt', 'r')

In[24]: fileread = f.readline()

In[25]: fileread

Out[25]: 'Life is too short.\n'

In[26]: fileread = f.readline()

In[27]: fileread

Out[27]: 'So, you need Python.\n'

In[28]: fileread = f.readline()

In[29]: fileread

Out[29]: 'Python is easy,\n'

In[30]: fileread = f.readline()

In[31]: fileread

Out[31]: 'and useful on many fields.'

In[32]: fileread = f.readline()

In[33]: fileread

Out[33]: ''

In[34]: f.close()


readlines()

  ○ 불러온 파일의 내용을 줄로 나누어 리스트로 작성한다.

  ○ list(f)와 f.readlines()은 거의 동등하다.


readlines()함수 예제)

In[35]: f = open('exam.txt', 'r')

In[36]: fileread = f.readlines()

In[37]: fileread

Out[37]: 

['Life is too short.\n',

 'So, you need Python.\n',

 'Python is easy,\n',

 'and useful on many fields.']

In[38]: f.close()



파일 쓰기

파이썬은 불러온 텍스트파일을 쓰기위해 write()와 같은 함수를 제공한다.


파일 쓰기를 위한 open() 함수의 설정

  ○ 위의 예와 마찬가지로 파일의 경로(파일이 작업영역(working place)에 있을 경우는 경로 생략 가능)와 열 파일명을 입력하고, 

  ○ 파일명 뒤에는 'w'을 입력하면 된다.
    ▷ 'w'은 쓰기모드로 파일을 연다는 의미이며 중복된 파일이 있을 경우 기존 파일을 무시하고 새로 만든다.
    ▷ 키워드 인자로 mode='w'로 입력해도 된다.
    ▷ 바이너리 파일을 열 경우에는 'wb'로 입력하면된다.
  ○ 파일을 이어쓰고 싶은 경우에는 파일명 뒤에 'a'을 입력하면 된다.
    ▷ 'a'은 쓰기모드로 파일을 열되 기존 파일이 있을 경우 이어 쓴다는 의미이다.


파일 읽기를 위한 open()함수 예제)

# 파일 새로 쓰기

file = open('c:\directory path\filename.txt', 'w')

file.close()

# 파일 이어 쓰기

file = open('c:\directory path\filename.txt', 'a')

file.close()


write(contents)

  ○ write() 함수는 open() 함수를 통해 연 파일에 필요한 내용을 출력하는 함수이다.

  ○ contents에는 파일에 출력할 내용을 적으면 된다.

    ▷ 문자열(str)형 자료형만 입력이 가능하다.

    ▷ 함수 작동시 문자열의 크기가 출력된다.

  ○ 아래 예제는 위의 exam.txt 파일에 추가적인 내용을 이어쓴 예제이다.


write()함수 예제)

In[43]: f = open('exam.txt', 'a')

In[44]: f.write('\n')

Out[44]: 1

In[45]: f.write('This is reasons why I learn Python!\n')

Out[45]: 36

In[46]: f.write('Good luck!')

Out[46]: 10

In[47]: f.close()


exam.txt 파일 추가 내용)

Life is too short.

So, you need Python.

Python is easy,

and useful on many fields.

This is reasons why I learn Python!

Good luck!



with 구문

위의 예제들에서는 open()함수를 통해 파일을 열고 읽고 쓰는 등 원하는 작업을 수행한 뒤 close() 메서드를 통해 파일을 닫아주는 것을 볼 수 있다.

이러한 방법으로 코드를 작성하면 close()를 사용하는 것을 깜빡했을 때 코드에 결함이 야기되게 된다.

파이썬에서는 위와 같은 문제를 해결하여 파일읽고 쓰기를 편리하게 하기 위해 with 구문을 제공한다.


with 구문

  ○ with 구문은 open()함수를 통해 파일을 열 때 구문 작성을 완료한 시점에서 자동으로 close()를 시켜주는 구문이다.

  ○ 다른 if 구문과 for 구문 등과 마찬가지로 구문의 내용임을 알리기 위해 들여쓰기를 사용한다.

    ▷ 스페이스, 탭 등을 사용할 수 있으나 4개의 스페이스를 사용하는 것이 권장된다.

  ○ 다음은 구문 형식을 보여준다.
    ▷ open에는 open함수와 동일한 내용이 입력된다. 
    ▷ as 뒤에는 열 파일 객체의 파이썬에서 명명할 이름을 적어으면 되고 아래 형식에서는 f라 명명되어 있다.
    ▷ 내용에는 작업하고자 하는 내용을 작성하면 된다.

with 구문 형식)
with open(file, mode, ... ) as f :
    내용

  ○ 다음의 예제는 둘 다 동일한 결과를 보여준다.


 with 구문

open(), close() 함수 

 with open('exam.txt', 'w') as f:

    f.write('good')

 f = open('exam.txt', 'w')

 f.write('good')

 f.close()



반응형

댓글