겉바속촉

[PYTHON] 파이썬_파일쓰기 본문

IT 일기 (상반기)/PYTHON

[PYTHON] 파이썬_파일쓰기

겉바속촉 2021. 1. 5. 17:27
728x90
반응형

 

안녕하세요

겉바속촉입니다

!^^!

 

 

!!파이썬 시작하기!!

 

 

 

 

 

 

파일 읽기에 이어서

파일 쓰기에 대해서 알아보도록 하겠습니다

 

 

 

2021/01/05 - [IT 일기 (상반기)/PYTHON] - [PYTHON] 파이썬_파일 읽기

 

[PYTHON] 파이썬_파일 읽기

안녕하세요 겉바속촉입니다 !^^! !!파이썬 시작하기!! 이번에는 파일 읽기에 대해서 알아보도록 하겠습니다 시작 전에 참고할 코드 (요 파일이 계속 등장할 예정) echo.py if __name__ == "__main__" : print("

2-juhyun-2.tistory.com

 

 

 

 

 


 

 

파일 쓰기

 

 

파일쓰기 모드 종류

  • 쓰기 모드 (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))

 

 

그럼 다시 실행시켜보면 제대로 나오고 있쥬?

 

 

 

 

 

728x90
반응형