파이썬(Python)

파이썬 - 파일(I/O)

BlueNoa 2023. 2. 25. 03:20
728x90
반응형

•파일의 읽고 쓰기

2023.01.19 - [파이썬] - 파이썬 - 읽고 쓰기와 모듈(Module)

모듈에 대한 내용을 다룰 때 모듈 기능에 파일을 만들고 저장하는 것을 모듈화 한 적이 있다.

이번에는 파일을 다루는데 좀 더 초점을 두고 정리하려고 한다.

프로그램을 만들 때 예외 사항이 발생해도 동작을 멈추지 않고 매끄럽게 진행되기 위해 사용하는 'try', 'except' 형태로 예시를 보자.

 

(예시1 - 기본적인 파일 관리)

import os
# 현재 작업하고 있는 경로 확인
# print(os.getcwd())

try:
    location = 'C:/Users/Jo/OneDrive/Desktop/'
    # 읽기
    letter = open(location + "Test.txt", mode = 'r', encoding = 'UTF-8')
    print(letter.read()) # 해당 문서의 내용이 끝날때까지 행단위로 출력된다.
    letter.close() # 파일을 열거나 저장하거나 읽기 등의 사용을 마친 후에는 반드시 닫아줘야 메모리를 절약할 수 있다.
    
    # 저장
    reply = open(location + 'Test_reply.txt', mode = 'w', encoding = 'UTF-8') # 경로 생략
    reply.write('스팸 메시지 사절입니다\n언제적 행운의 편지입니까?')
    reply.close()
    
    # 저장한 파일에 내용 추가
    reply_add = open(location + 'Test_reply.txt', mode = 'a', encoding = 'UTF-8')
    reply_add.write('\n다시는 이런 편지 보내지 말아주세요!')
    reply_add.close()
    
    reply_read = open(location + 'Test_reply.txt', mode = 'r', encoding = 'UTF-8')
    print('\n' + reply_read.readline(2)) # 하나의 행에서 두 글자 읽기
    line_text = reply_read.readlines() # 모든 행 읽기
    print(line_text) # 모든 행의 내용을 출력
    print(line_text[2]) # 세 번째 행 단위 내용만 출력

except Exception as e:
    print('에러 내용 : ', e)

불러온 파일의 정체는 행운의 편지였다.

이 편지는 영국에서 최초로 시작되어 일년에 한바퀴를 돌면서 받는 사람에게 행운을 주었고 지금은 당신에게로 옮겨진 이 편지는 4일 안에 당신 곁을 떠나야 합니다. 
이 편지를 포함해서 7통을 행운이 필요한 사람에게 보내 주셔야 합니다. 
복사를 해도 좋습니다. 혹 미신이라 하실지 모르지만 사실입니다.

영국에서 HGXWCH이라는 사람은 1930년에 이 편지를 받았습니다. 
그는 비서에게 복사해서 보내라고 했습니다. 
며칠 뒤에 복권이 당첨되어 20억을 받았습니다. 
어떤 이는 이 편지를 받았으나 96시간 이내 자신의 손에서 떠나야 한다는 사실을 잊었습니다. 
그는 곧 사직되었습니다. 나중에야 이 사실을 알고 7통의 편지를 보냈는데 다시 좋은 직장을 얻었습니다. 
미국의 케네디 대통령은 이 편지를 받았지만 그냥 버렸습니다. 결국 9일 후 그는 암살당했습니다. 
기억해 주세요. 이 편지를 보내면 7년의 행운이 있을 것이고 그렇지 않으면 3년의 불행이 있을 것입니다.
그리고 이 편지를 버리거나 낙서를 해서는 절대로 안됩니다. 7통입니다. 
이 편지를 받은 사람은 행운이 깃들것입니다. 힘들겠지만 좋은게 좋다고 생각하세요. 7년의 행운을 빌면서...

스팸
[' 메시지 사절입니다\n', '언제적 행운의 편지입니까?\n', '다시는 이런 편지 보내지 말아주세요!']
다시는 이런 편지 보내지 말아주세요!
반응형

(예시2 - with문을 이용한 파일 관리)

반면 매번 파일 관련된 명령어를 사용할 때 메모리 관리를 위해 close 명령문을 사용해 줘야 편리하게 작성하기 위해 사용하는 구문이 'with'문이다. with문으로 파일을 관리하면 자동으로 close를 해주기 때문에 메모리 용량을 확인해야 되는 귀찮음이 해소된다.

# with를 사용하면 close가 자동으로 적용된다.
try:
    location = 'C:/Users/Jo/OneDrive/Desktop/'
    with open(location + 'test_file.txt', mode = 'w', encoding = 'UTF-8') as tf:
        tf.write('거울은 초록색이다.\n')
        tf.write('땅콩은 견과류가 아니다.')
    
    with open(location + 'test_file.txt', mode = 'r', encoding = 'UTF-8') as tf:
        print(tf.read())

except Exception as e:
    print(e)

놀라운 사실을 저장하고 무사히 읽어올 수 있었다.

거울은 초록색이다.
땅콩은 견과류가 아니다.

(추가 내용)

try, except 구문에서 마지막에 finally를 써줄 수 있는데 해당 부분은 에러 여부와는 상관없이 무조건 수행되는 부분이다.

728x90
반응형

'파이썬(Python)' 카테고리의 다른 글

파이썬 - 내장 DB(SQL), 서버 DB(SQL)  (0) 2023.03.04
파이썬 - 클래스(3)  (0) 2023.02.18
파이썬 - 클래스(2)  (0) 2023.02.08
파이썬 - 클래스(1)  (0) 2023.01.25
파이썬 - 읽고 쓰기와 모듈(Module)  (2) 2023.01.19