본문 바로가기

파이썬/사용법

[python] 파일을 읽고 쓰기

안녕하세요!

이번 글에서는 파이썬에서 파일을 읽고 쓰는 방법에 대해서 알아보려고 합니다.

 

1) open 으로 파일 객체 반환하기

2) 읽기 관련 메서드

3) 쓰기 관련 메서드

 

순으로 알아보겠습니다.

 


1) open 으로 파일 객체 반환하기

파일을 읽거나 쓰려면 우선 파일 객체를 만들어야 합니다.

파일 객체 이름 = open(filename, mode, encoding=None)

filename 인자는 파일의 위치/파일이름을 포함하는 문자열을 써주면 됩니다.

 

mode의 종류에 따라 전달해야 할 인자가 정해져 있습니다.

용도에 맞게 사용해 보세요

이번 글에서는 r와 w를 사용해 보겠습니다.

mode 종류 용도
'r' 파일을 읽기만 하는 경우
'w' 파일을 쓰기만 하는 경우
(기존 내용 삭제 후 쓰기)
'a' 파일에 쓰기를 하는데 추가만 하는 경우
(기존 내용에 추가)
'r+' 읽기와 쓰기 모두 하는 경우

 

encoding의 인자는 utf-8이 최신 표준으로 모두 사용하는 느낌이라 

다른 인코딩이 좋다고 느껴서 사용하시는 게 아니면 

encoding='utf-8'로 사용하시는게 좋습니다.

 

 

C:\Users\user\Desktop\name_list.txt

바탕화면에 name_list.txt 파일을 가지고 읽기를 해볼 예정입니다.

# 바탕 화면에 있는 텍스트 파일 예시 아래 글자만 복붙하세요
# 경로는 C:\Users\user\Desktop\name_list.txt 입니다.

문땡땡	18
김땡땡	14
정땡땡	14
곽땡땡	15
구땡땡	16

2) 읽기 관련 메서드

2-1) filename.read(n) method 

스트림에서 최대 n자를 읽습니다.

n개의 문자가 있거나 EOF에 도달할 때까지 기본 버퍼에서 읽습니다

n이 음수이거나 생략되면 EOF까지 읽습니다.

f = open(r'C:\Users\user\Desktop\name_list.txt', 'r', encoding="utf-8")

print(f.read())

# 문땡땡  18
# 김땡땡  14
# 정땡땡  14
# 곽땡땡  15
# 구땡땡  16

n을 생략하며 파일 처음부터 끝까지 읽어온 모습입니다.

 

 

2-2) filename.readline() method

f = open(r'C:\Users\user\Desktop\name_list.txt', 'r', encoding="utf-8")

print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())

# 문땡땡  18
# 
# 김땡땡  14
#
# 정땡땡  14
#
# 곽땡땡  15
#
# 구땡땡  16
#

끝에 기본적으로 \n 붙어 있다 생각하고 코드 짜야합니다.

빈 문자열을 리턴하면 EOF입니다.

문자열을 모두 리턴하고 나면 newline만 리턴합니다.

 

 

2-3) filename.readlines() method list(f)와 동일

 

readlines()는 리스트로 모든 line을 반환합니다.

lines = f.readlines()

print(lines)

for line in lines:
    print(line)
    
#['문땡땡\t18\n', '김땡땡\t14\n', '정땡땡\t14\n', '곽땡땡\t15\n', '구땡땡\t16\n', '\n', '\n']
# 문땡땡  18
#
# 김땡땡  14
#
# 정땡땡  14
#
# 곽땡땡  15
#
# 구땡땡  16

 

2-4) 모든 줄 읽어 들이기

 

f = open(r'C:\Users\user\Desktop\name_list.txt', 'r', encoding="utf-8")

for line in f:
    print(line, end="")

# 문땡땡  18
# 김땡땡  14
# 정땡땡  14
# 곽땡땡  15
# 구땡땡  16
#
#

f를 for문에서 사용하면 이런 식으로 활용할 수 있네요.

파이썬 레퍼런스에서 이방식이 메모리가 효율적이라고 말하고 있습니다.

for문에 file object를 바로 줘서 사용하는 형식을 지향합시다.

 

 

3) 쓰기 관련 메서드

파이썬은 파일에 쓰는 메서드를 여러 가지 제공하고 있습니다.

쓰기 메서드는 하나만 기억하면 됩니다.

3-1) filename.write(str)

f = open(r'C:\Users\user\Desktop\writing_name.txt', 'w', encoding="utf-8")
f.write('hihi')
f.write('hihi')
f.write('hihi')

메모장에 hi라고 글자가 써진 모습을 볼 수 있습니다.

 


정리)

1) open 으로 파일 객체 반환하기

open 후 filname 인자, mode 인자 그리고 encoding 인자를 전달해주어야 하는데

filename에는 경로를 포함한 파일 이름.

 

mode는 크게 4가지가 있다.

읽기, 쓰기, 수정하기, 읽고 쓰기, ('r', 'w', 'a', 'r+')등 이 있다.

 

encoding= 다른 인코딩 방식을 모른다면 그냥

encoding='utf-8' 공식처럼 사용하면 된다.

제일 표준처럼 사용하는 인코딩 방식이다.

2) 읽기 관련 메서드

read, readline, readlines 등 이 있다.

모든 줄을 불러오고 싶으면 readlines와 파일 객체를 그대로 for문에서 사용하는 방법이 있는데

파일 객체를 사용하는 방법이 메모리를 더 아낄 수 있다고 말했다.

3) 쓰기 관련 메서드

여러 메서드를 지원하지만 file.write()만 기억하면 수월할 거 같다.

 

마치면서)

파이썬 공식 문서에서 파이썬 reading and writing files로 예제를 찾아보시면

더욱 자세한 정보를 얻을 수 있습니다. 

다음 글에서도 유용한 파이썬 팁과 기능을 소개하도록 하겠습니다

감사합니다.