본문 바로가기

Python

파이썬 open( ) r 모드 - 파일 읽기 read(), readline(), readlines()

r

파이썬에서 open() 메서드를 이용해 외부 파일을 열 수 있습니다.

open 모드 중 "r" 은 선택한 파일을 읽기용으로 열때 사용합니다.

"r" 모드에서는 read(),readline(),readlines() 등의 메서드를 사용할 수 있습니다.

 

1. read()

1-1. read() 메서드는 오픈한 파일의 모든 내용을 읽어와 저장합니다.

예를 들어, 아래의 내용이 담긴 sample.txt 라는 이름의 파일이 있습니다.

사과주스 1잔 1,000원
배주스 1잔 2,000원
수박주스 1잔 3,000원

sample.txt 파일을 읽기 모드로 연 다음, file_obj라는 변수에 저장합니다. 그리고 file_obj 변수에 저장한 파일의 내용을 read() 함수로 읽어와 변수 x에 저장합니다. 마지막으로, 변수 x를 출력하고, 변수 x의 타입을 출력합니다.

file_obj = open("sample.txt", "r", encoding="utf8")
x = file_obj.read()
print(x)
print("----------------------")
print(type(x))
file_obj.close()

출력 결과는 다음과 같습니다.

사과주스 1잔 1,000원
배주스 1잔 2,000원  
수박주스 1잔 3,000원
----------------------
<class 'str'>

1-2.

2. readline()

2-1. readline() 은 오픈한 파일의 내용 중 첫번째 라인, 딱 한 줄만 읽어 옵니다. 그리고 커서는 그 다음 줄로 이동합니다.

예제 들어, 위의 simple.txt 파일을 readline() 함수로 읽어오면 다음과 같습니다.

file_obj = open("sample.txt", "r", encoding="utf8")
print(file_obj.readline())
print("----------------------")
print(type(file_obj.readline()))
file_obj.close()

출력 결과는 다음과 같습니다.

사과주스 1잔 1,000원

----------------------
<class 'str'>

2-2. readline() 함수를 두번 연달아 실행하면 첫번째 실행때는 첫번째 줄이, 두번째 실행때는 두번째 줄이 출력됩니다. 첫 번째 실행 후 커서가 그 다음 줄로 이동해 있기때문입니다.

예제

file_obj = open("sample.txt", "r", encoding="utf8")
print("----------------------")
print(file_obj.readline())
print(file_obj.readline())
print("----------------------")
file_obj.close()

출력 결과는 다음과 같습니다.

----------------------
사과주스 1잔 1,000원  

배주스 1잔 2,000원    

----------------------

3. readlines()

3-1. readlines() 은 오픈한 파일의 내용을 한줄 씩 모두 불러와 리스트 list 형태에 저장합니다.

예를 들어, 첫 번째 줄은 index 0에, 두 번째 줄은 index 1에, 세 번째 줄은 index 2에 이런 식으로 줄단위로 나누어 리스트로 저장합니다.

예제.

위의 simple.txt 파일을 readlines() 함수로 불러오면 다음과 같습니다.

file_obj = open("sample.txt", "r", encoding="utf8")
x = file_obj.readlines()
print(x)
print("----------------------")
print(type(x))
file_obj.close()

출력 결과는 다음과 같습니다.

['사과주스 1잔 1,000원\n', '배주스 1잔 2,000원\n', '수박주스 1잔 3,000원']    
----------------------
<class 'list'>

3-2. index 번호를 이용해 특정 줄만 출력할 수 있습니다.

예제

file_obj = open("sample.txt", "r", encoding="utf8")
x = file_obj.readlines()[1]
print("----------------------")
print(x)
print("----------------------")
file_obj.close()

출력 결과는 다음과 같습니다.

----------------------
배주스 1잔 2,000원    

----------------------

3-3. 리스트를 for 루프를 이용해 출력할 수도 있습니다.

예제

file_obj = open("sample.txt", "r", encoding="utf8")
x = file_obj.readlines()
for menu in x :
    print("----------------------")
    print(menu)
file_obj.close()

출력 결과는 다음과 같습니다.

----------------------
사과주스 1잔 1,000원  

----------------------
배주스 1잔 2,000원    

----------------------
수박주스 1잔 3,000원