겉바속촉
[PYTHON] 파이썬_파일쓰기 본문
안녕하세요
겉바속촉입니다
!^^!
!!파이썬 시작하기!!
파일 읽기에 이어서
파일 쓰기에 대해서 알아보도록 하겠습니다
2021/01/05 - [IT 일기 (상반기)/PYTHON] - [PYTHON] 파이썬_파일 읽기
파일 쓰기
파일쓰기 모드 종류
-
쓰기 모드 (write) ⇒ 동일한 파일이 없으면 새로 생성, 있으면 기존 파일을 삭제 후 새로 생성
-
덧붙이기 모드 (append) ⇒ 기존 파일이 있으면 파일 내용을 추가
1. 쓰기 모드 (write)
쓰기 모드로 test.txt 를 open할거에요
output_file에다 그것을 넣은 후에 'new message'라고 내용을 넣겠다!! 라는 명령입니다
with open('./test.txt', 'w') as output_file:
output_file.write('new message')
실행시켜볼까요?~~
⇒ test.txt 파일이 생성된 것을 확인!!!!!!
내용도 보면 우리가 넣어준 그대로 들어있습니다
그럼 동일한 명령을 다시 내릴게요
대신 그 안의 텍스트 내용을 바꿀게요!!!! new message 2
with open('./test.txt', 'w') as output_file:
output_file.write('new message 2')
실행시켜서 내용이 바뀌었는 지 볼까요?~~
⇒ test.txt 파일 내용이 새 내용으로 변경된 것을 확인!!!!
2. 덧붙이기 모드 (append)
파일명은 이번에 test2.txt 라고 주었습니다.
with open('./test2.txt', 'a') as output_file:
output_file.write('new message')
실행시켰더니 test2.txt 가 만들어졌고!!
내용도 입력해준 그대로 들어있습니다.
이번에는 동일한 명령에다가 new message 2 입력!!
with open('./test2.txt', 'a') as output_file:
output_file.write('new message 2')
실행시켜보니 다음과 같이 원래 메시지 뒤에 붙는 군요!!
⇒ test2.txt 파일 내용이 새 내용으로 추가된 것을 확인!!!!
추가로 연습해보기
input_number.txt
1.2 1.4
3.0 -2.0
5.2 9.2
sum_number_pairs.py
with open('.\input_number.txt', 'r') as input_file, \
open('.\output_number.txt', 'w') as output_file:
for number_pair in input_file:
number_pair = number_pair.strip()
operands = number_pair.split()
total = float(operands[0]) + float(operands[1])
output_file.write('{} {} {}\n'.format(operands[0], operands[1], total))
input_number로 파일을 읽어오는 데 read용도로 input_file에다가
output_number 파일을 만드는 데 write용도로 output_file에다가
number_pair 속에 input_file 속 값들을 넣어줄 건데~
number_pair는 공백을 제거해서 문자로 만들어서 넣을 거야
operands는 공백 제거된 문자를 쪼개서 넣을 거야
total 은 각각의 operands 항목들을 타입변환시켜서 더해줄거야
output_file에는 그래서 세 가지를 계속 출력하면 되는 것!!!
실행시켜보면 output_number.txt 파일이 생성되고 내용은 다음과 같이!!
그런데 뭔가 수가 이상합니다. 바로 부동소수점 오차 문제가 발생해서 나오는 결론인데요
코드를 다음과 같이 고쳐주시면 해결될거에요
import decimal
with open('.\input_number.txt', 'r') as input_file, \
open('.\output_number.txt', 'w') as output_file:
for number_pair in input_file:
number_pair = number_pair.strip()
operands = number_pair.split()
total = decimal.Decimal(operands[0]) + decimal.Decimal(operands[1])
output_file.write('{} {} {}\n'.format(operands[0], operands[1], total))
그럼 다시 실행시켜보면 제대로 나오고 있쥬?
'IT 일기 (상반기) > PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬_실습 (0) | 2021.01.06 |
---|---|
[PYTHON] 파이썬_StringIO, 파일 읽기 방법 활용 (0) | 2021.01.05 |
[PYTHON] 파이썬_파일 읽기 연습하기 (0) | 2021.01.05 |
[PYTHON] 파이썬_파일 읽기 (0) | 2021.01.05 |
[PYTHON] 파이썬_루프 코드 반복(무한루프, 반복제어) (0) | 2021.01.05 |