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

#036 파이썬 기초 - 입력과 출력 II

by DoitSQL 2023. 3. 19.
728x90

Python기초강의강좌, 파이썬기초강의강좌, 파일입출력

#036 파이썬 기초 - 입력과 출력 II

입력과 출력 II

지난 시간에 이어서 입력과 출력에 대한 내용을 더 알아보겠습니다. 이번 시간에는 파일의 입력과 출력에 대해서 공부하겠습니다.


파일 사용하기

입/출력을 위해 파일을 열고 사용하려면 file 클래스의 객체를 생성한 후 read , readline , write와 같은 메서드들을 적절히 활용하면 됩니다. 파일을 열 때 파일을 읽기 모드와 쓰기 모드를 따로 지정해 줄 수 있습니다.

마지막으로 파일을 읽거나 쓰는 일을 모두 마친 후에는, close 메서드를 호출하여 파이썬에게 그 파일을 다 사용했다는 것을 알려 주어야 합니다.

 

예제  ( io_using_file.py로 저장하세요 )

# Filename : io_using_file.py
# -*- coding:utf-8 -*-

# 봄을 주제로 한 ChatGPT의 시
poem = '''\
봄의 도착

겨울이 지나가고 서리가 그치면
새로운 계절이 살아나고
푸르른 빛깔과 향기로운 향기로
다툼을 그치게 한다.

나무의 꽃봉오리가 피기 시작한다.
새들은 둥지로 돌아오고
태양은 하늘에서 더 밝게 빛나고
따뜻함이 넘치고 축복이 내린다.

땅은 잠에서 깨어나고
꽃들은 산들바람에 춤춘다,
세상은 새로운 희망으로 가득 차고
생명은 움트기 시작한다.

낮은 길어지고 밤은 짧아지고
그리고 자연은 살아나고
봄의 기쁨은 사방에 기득차고
경이로움이 되살아 난다.

그러니 봄을 기쁨으로 맞이하자.
그리고 그 탄생을 축하하자.
새로운 세상을 만들어내는 봄
그 아름다움을 만끽하자.
'''

# 파일을 쓰기모드로 엽니다.
f = open('poem.txt', 'w')
# poem을 파일에 씁니다.
f.write(poem)
# 파일을 닫습니다.
f.close()
# E:\python_study 폴더에 poem.txt 파일이 생성된게 확인됩니다.

# 파일을 열때 모드를 지정하지 않으면
# 읽기모드가 기본입니다.
f = open('poem.txt')
# 파일을 라인단위로 읽어서 출력합니다.
while True:
    # 한 줄씩 읽습니다.
    line = f.readline()
    # 길이가 0이면 EOF를 나타냅니다
    if len(line) == 0:
        break
    # 파일에는 이미 개행문자가
    # 포함되어 있습니다.
    # 그래서 print 문에서 자동으로 붙는 개행문자를
    # 없애주어야 합니다.
    print(line,end='')
# 파일을 닫습니다.
f.close()

▶ 실행 결과

C:\Anaconda\envs\study_39\python.exe E:\python_study\io_using_file.py
봄의 도착

겨울이 지나가고 서리가 그치면
새로운 계절이 살아나고
푸르른 빛깔과 향기로운 향기로
다툼을 그치게 한다.

나무의 꽃봉오리가 피기 시작한다.
새들은 둥지로 돌아오고
태양은 하늘에서 더 밝게 빛나고
따뜻함이 넘치고 축복이 내린다.

땅은 잠에서 깨어나고
꽃들은 산들바람에 춤춘다,
세상은 새로운 희망으로 가득 차고
생명은 움트기 시작한다.

낮은 길어지고 밤은 짧아지고
그리고 자연은 살아나고
봄의 기쁨은 사방에 기득차고
경이로움이 되살아 난다.

그러니 봄을 기쁨으로 맞이하자.
그리고 그 탄생을 축하하자.
새로운 세상을 만들어내는 봄
그 아름다움을 만끽하자.

▶ 동작 원리

먼저, 내장 함수 open을 이용하여 파일을 열어 줍니다. 이때 파일을 어떤 용도로 사용할 것인지도 함께 지정해 줍니다. 각 모드로는 읽기 모드 ( 'r' ), 쓰기 모드 ( 'w' ), 덧붙임 모드( 'a' ) 등이 있습니다. 또한 우리가 다룰 파일을 일반적인 텍스트 모드 ( 't' )로 다룰지 또는 바이너리 모드 ( 'b' )로 다룰지 여부도 함께 지정해 줄 수 있습니다. 이외에도 여러 가지 다른 모드들이 있으며, help(open)을 통해 그 목록을 확인해 볼 수 있습니다. 모드에 아무것도 지정하지 않으면, open() 은 기본적으로 파일을 텍스트('t’ext) 모드의 읽기('r’ead) 모드로 파일을 열어 줍니다.

 

위 예제에서는 먼저 파일을 쓰기/텍스트 모드로 열고 파일 객체의 write 메서드를 사용하여 파일에 써준 후 close로 파일을 닫아 줍니다.

 

다음으로는, 똑같은 파일을 이번에는 읽기 모드로 엽니다. 이때 아무 모드도 지정하지 않았는데 이렇게 하면 기본값인 '읽기/텍스트 모드'가 지정됩니다. 파일을 연 후에는 반복문을 이용하여 파일의 readline 메서드를 통해 파일의 내용을 한 줄씩 읽어옵니다. 이 메서드는 파일 내용을 읽다가 줄 바꿈 문자를 만날 때까지 한 줄을 읽어서 그 모든 내용을 반환해 줍니다. 만약 빈 문자열이 반환되었을 경우, 이것은 파일의 끝임을 의미하는 것이므로 'break' 문을 통해 반복문을 빠져나옵니다.

 

마지막으로, close 문으로 파일을 닫습니다.

 

이제 poem.txt 파일을 직접 열어 보시고 예제 프로그램이 올바른 내용을 쓰고 읽었는지 다시 한번 확인해 보시기 바랍니다.

 

▶ 파일을 라인 단위로 읽는 간단한 코딩

# 파일을 라인단위로 읽어서 출력합니다.
while True:
    # 한 줄씩 읽습니다.
    line = f.readline()
    # 길이가 0이면 EOF를 나타냅니다
    if len(line) == 0:
        break
    # 파일에는 이미 개행문자가
    # 포함되어 있습니다.
    # 그래서 print 문에서 자동으로 붙는 개행문자를
    # 없애주어야 합니다.
    print(line,end='')
    
# 위 코딩 부분을 아래와 같이 간단히 할 수 있습니다.    
for line in f:
    print(line, end='')

for 문을 이용해서 간단히 코딩할 수도 있습니다.


이번 시간에는 파일 입/출력에 대해서 배웠습니다.

다음 시간에는 pickle 대해서 배워보겠습니다.

 

감사합니다.

Do it! SQL을 찾아 주셔서 감사합니다. ♥ 댓글이 큰 힘이 됩니다.

 

728x90

댓글