가끔 logging 같은 패키지를 쓰지 않고, 텍스트 파일에 바로 메세지를 기록하고 싶은 경우가 있습니다.
이 경우, .txt 파일을 바로 불러와서 읽고(r), 쓰고(w), 덧붙이는(a) 방법이 가장 간편합니다.
오늘은 각각의 사용 방법을 간략하게 알아보도록 합시다.
파일 준비
먼저, 테스트를 위해 파일을 하나 만들어둘까요?
msg.txt
this is my message
message ended!
이렇게 두 줄의 문장으로 이뤄진 msg.txt 파일을 만들어둡니다.
파일 읽기
그럼, 바로 파일을 읽어볼게요.
읽기, 쓰기, 이어붙이기 기능 모두 먼저 파일을 열어줘야 합니다. 이때 with open() 이라는 파이썬의 기능을 사용할 수 있습니다.
아래처럼 msg.txt 파일을 읽고, 한 줄씩 출력합니다.
with open('msg.txt','r') as f:
lines = f.readlines()
for l in lines:
print(l)
출력 결과
this is my message
message ended!
한 줄씩 해석해볼까요?
with open('msg.txt', 'r') as f: : msg.txt라는 파일을 읽기 전용(r)으로 읽어서, f라는 이름으로 불러오겠다는 의미입니다.
lines = f.readlines(): 불러온 파일을 한 줄씩 읽어서 lines에 저장합니다.
for l in lines: print(l) : lines에 저장된 파일을 한 줄씩 print합니다.
파일 쓰기
다음으론 파일을 써볼까요?
읽기와 거의 동일합니다. 아래처럼 msg.txt를 열고, 새로운 메세지를 작성해봅니다.
with open('msg.txt','w') as f:
f.write('writing new message!')
출력 결과(msg.txt 파일에 저장된 내용)
(msg.txt 파일)
writing new message!
직관적으로 보면, msg.txt 파일을 쓰기 전용(w)으로 읽어서, 새로운 문장을 넣어주는(f.write) 부분을 볼 수 있습니다.
msg.txt 파일을 열어보면, 기존에 있던 문장은 제거되고, 새로 입력한 "writing new message!" 만 남아있을 겁니다.
파일 이어쓰기
하지만 대부분의 경우엔 파일을 새로 덮어써버리는 것이 아니라, 새로운 문장을 이어쓰길 바랄텐데요.
이 경우는 아래와 같은 코드로 이어쓸 수 있습니다.
with open('msg.txt','a') as f:
for i in range(10):
f.write('appending new message! line {}\n'.format(i))
출력 결과(msg.txt 파일에 저장된 내용)
(msg.txt 파일)
writing new message!
appending new message! line 0
appending new message! line 1
appending new message! line 2
appending new message! line 3
appending new message! line 4
appending new message! line 5
appending new message! line 6
appending new message! line 7
appending new message! line 8
appending new message! line 9
appending new message! line 10
msg.txt 파일을 이어쓰기 전용(a)으로 읽어서, 새로운 문장을 붙여주는(f.write) 부분을 볼 수 있습니다.
제 코드에선 for문으로 10줄을 추가하도록 해 봤습니다.
줄바꿈을 하기 위해, 문장 마지막에 '\n'을 붙여줍니다.
이번엔 맨 첫줄 "writing new message!"가 삭제되지 않고, 그 뒤에 새로운 메세지들이 붙어있는 모습을 볼 수 있습니다.
마무리
이렇게 .txt 파일을 직접 열고 읽기/쓰기 작업을 하는 코드를 살펴봤는데요, 코드 자체가 워낙 단순하기 때문에 금방 적응할 수 있을 것이라 생각됩니다. 다만, 'w' 옵션을 잘못 사용하면 기존 데이터를 경고 메세지도 없이 전부 덮어쓴다는 점이 좀 심각한 문제가 될 수 있을 것 같네요.
중요한 로깅을 할 때는 logging 패키지를 사용하는 것을 강력 추천드립니다.
그럼 파이썬 코딩 화이팅입니다!
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 일별 timestamp 만들기 (0) | 2024.02.15 |
---|---|
[Python] Pandas보다 빠른 Polars (1) | 2023.07.08 |
[Python] 백그라운드에서 파이썬 코드 실행하기 (2) | 2021.08.29 |
[Python]파이썬으로 네이버 메일 보내기 (0) | 2021.08.23 |
[Python] 파이썬으로 웹페이지 크롤링하기 (0) | 2021.08.15 |
댓글