반응형
#01 파일 입출력 기초
- 파일 입력(input) : 기존의 파일 내용을 읽어들이는 것
- 파일 출력(output) : 기존 파일에 새로운 내용을 추가하거나 새로운 파일을 생성하는 것
- 파이썬 언어 특성상, 파일을 읽어들이는 경우가 많음
- 데이터 → 파일 → 분석, 가공, 시각화
✅ 파일 열기
- 입출력 작업을 진행할 파일을 지정하는 것
파일 입출력은 반드시 파일 열기 작업을 가장 먼저 수행해야 함
File → Open : 현재 파이썬 모듈들 어디에 저장되는지 알 수 있음 - 파일명 : 입출력 작업을 수행할 파일
- 모드 : 파일을 여는 목적, 파일 입력 또는 출력을 위해서인지 모드를 통해 결정
[ 모드 종류 ]
분류 | 종류 | 의미 | 설명 | 파일이 없을 때 동작 | 파일이 있을 때 동작 |
입력 | r | read | 읽기 | 오류 발생 | 읽기 |
출력 | w | write | 쓰기 | 새로 생성 | 새로 생성 (덮어쓰기) |
a | append | 추가 | 새로 생성 | 추가 (이어쓰기) | |
x | exclusive | 배타적 추가 | 새로 생성 | 오류 발생 |
#02 파일 입력(input)
✅ read : open() 함수 & close() 메서드 / readline() 메서드
파일객체 = open(파일명, 모드)
파일객체.close()
# 파일 읽어들이는 코드
file = open('test.txt', 'rt')
cnt = 0
# 파일 데이터 몇개인지 모르기때문에 while
while True:
# 파일의 내용을 읽어줘
line = file.readline() # file은 메서드의 주체임으로 객체라는 것을 알 수 있음
# if 읽은 내용이 없다면 break
if line == '':
break
# 아니라면 읽은 내용 출력
cnt += 1
print(str(cnt) + ' ' + line)
# 읽었으면 닫기
file.close()
✅ read : with문 / readlines() 메서드
with open(파일명, 모드) as 파일객체:
파일처리코드
cnt = 0
with open('test.txt', 'rt') as file:
# 전부 읽어와줘
# 읽은 데이터 list로 저장
lines = file.readlines()
for line in lines :
cnt += 1
print(str(cnt) + ' ' + line)
#03 파일 출력(output)
✅ write : with문 / write() 메서드
# wt
# 1) 새로운 텍스트 파일 생성
# 2) 기존의 내용위에 덮어쓰기 (원본 데이터 주의★)
with open('test.txt', 'wt') as file:
# 메시지를 작성할건데 몇번할지는 모름
while True:
msg = input('입력 >> ')
# if 아무것도 입력을 안했다면 break
# 입력 안했다면 공백일 것임
# 공백은 false니까 not을 붙여서 true로 만들기
# 파이썬에서 많이 활용하는 방법!
if not msg:
break
# 입력한게 있다면 작성해줘
file.write(msg)
✅ append : with문 / write() 메서드
# at : 기존의 내용위에 이어쓰기
with open('test.txt', 'at') as file:
# 메시지를 작성할건데 몇번할지는 모름
while True:
msg = input('입력 >> ')
# if 아무것도 입력을 안했다면 break
# 입력 안했다면 공백일 것임
# 공백은 false니까 not을 붙여서 true로 만들기
# 파이썬에서 많이 활용하는 방법!
if not msg:
break
# 입력한게 있다면 작성해줘
file.write(msg)
#04 파일 입출력 + 슬라이싱
더보기
# quiz.txt 파일에 영단어 1개를 저장해주세요.
# banana
# ______ 입력 >> a
# _a_a_a 입력 >> c
# c는 없습니다!
# _a_a_a 입력 >> b
# ba_a_a 입력 >> n
# banana 정답입니다! :D
# quiz.txt 파일에 총 4번만에 정답을 맞추셨습니다. 라고 작성해서 저장해주세요.
# 문제 정답
ew = ''
# 문제 '_' 초기화
blank = ''
# 시도 횟수 초기화
attempt_cnt = 0
# 데어터 읽어서 str 변수에 저장
with open('quiz.txt', 'rt') as file:
ew = file.read()
blank = '_' * len(ew)
# 퀴즈 시작! 몇번만에 맞출지 모르니 while
while True:
# 문제 출력
print(blank, end = ' ')
# 종료조건_문제 정답과 사용자 입력값이 같다면 정답이라고 출력
if blank == ew:
print('정답입니다! :D')
break
# 사용자 입력 받기
user_input = input('입력 >> ')
attempt_cnt += 1
# 입력값이 포함되면
# '_' 문자열을 사용자 입력값으로 교체
if user_input in ew:
# 같은 문자가 여러개 있을 수 있음
for i in range(len(ew)):
# 문자가 같니?
if user_input == ew[i]:
# 슬라이싱★★★
blank = blank[:i] + user_input + blank[i+1:]
# 입력값이 포함되지 않으면 없다고 출력
else:
print(user_input + '는 없습니다!')
# 총 n번만에 정답을 맞추셨습니다. 라고 문자열 추가!
with open('quiz.txt', 'at') as file:
file.write('\n총 ' + str(attempt_cnt) + '번만에 정답을 맞추셨습니다!')
반응형
'개발 > 파이썬' 카테고리의 다른 글
Python_파이참(PyCharm) (0) | 2024.07.15 |
---|---|
Python #12_예외 처리 (0) | 2024.07.15 |
Python #09_모듈과 import (0) | 2024.07.15 |
Python #08_사용자 정의 함수 (0) | 2024.07.15 |
Python #07_메서드 (0) | 2024.07.15 |