728x90
반응형
SMALL
1. 파일 열기

- 파일열기 모드: w(출력), r(입력), a(추가출력,기존에 파일이 있을때 내용을 추가)
- w는 지정된 경로에 파일이 없으면 파일을 생성후 저장하고, 파일이 있으면 기존의 모든 데이터를 지우고 다시 저장 (한글의 삽입모드)
- r은 지정된 경로에 파일이 없으면 에러, 있으면 해당파일의 데이터를 읽어옴
- a는 지정된 경로에 파일이 없으면 만든후에 저장, 있으면 기존의 데이터 뒤에 이어서 저장 (한글의 입력모드)
- 파일 종류 모드: t(텍스트 파일, 생략 가능), b(바이너리 파일, # 바이너리 = 텍스트 이외의 모든파일)

파일을 출력할때 작업이 모두 완료되면 반드시 close() 메소드를 사용해서 파일을 닫아야 정상적으로 데이터가 저장됌
1-1. 파일 저장하기
file = open('data.txt', 'wt')
for i in range(10):
file.write('파일 열기 테스트: ' + str(i) + '\n') # \n: 파일 내에서 개행(엔터키역할)
file.close()
print('data.txt 파일에 쓰기 완료!')
data.txt 파일에 쓰기 완료!
1-2. 파일 경로
- 절대 경로: 디스크 드라이브의 최상위(root) 디렉토리부터 파일이 저장 또는 읽어올 디렉토리까지의 경로(c드라이브 부터)
- 예) C:/eadgnus/python/Day2/data.txt
- 상대 경로: 현재 화면에 표시되는 소스파일이 위치한 디렉토리부터 파일이 저장 또는 읽어올 디렉토리까지의 경로(현재위치부터)
- 같은 디렉토리: 파일명 or ./파일명
- 상위 디렉토리: ../파일명 or ./../파일명
- 하위 디렉토리: 디렉토리명/파일명 ./디렉토리명/파일명
- 리눅스에서는 ./ : 현재 파일위치라는뜻
file = open('./data/data.txt', 'wt')
for i in range(10):
file.write('파일 열기 테스트: ' + str(i) + '\n')
file.close()
print('data.txt 파일에 쓰기 완료!')
data.txt 파일에 쓰기 완료!
1-3. 파일 읽어오기
- read(): 파일로부터 전체 데이터를 읽어옴
- read(size): 파일로부터 사이즈 만큼 데이터를 읽어옴
file = open('./data/data.txt', 'rt')
data = file.read()
print('data.txt 전체 데이터 읽기 완료!')
print(data)
file.close()
data.txt 전체 데이터 읽기 완료!
파일 열기 테스트: 0
파일 열기 테스트: 1
파일 열기 테스트: 2
파일 열기 테스트: 3
파일 열기 테스트: 4
파일 열기 테스트: 5
파일 열기 테스트: 6
파일 열기 테스트: 7
파일 열기 테스트: 8
파일 열기 테스트: 9
file = open('./data/data.txt', 'rt')
data = file.read(10) # 유니코드 10 글자를 읽어온다.
print('data.txt 일부 데이터 읽기 완료!')
print(data)
file.close()
data.txt 일부 데이터 읽기 완료!
파일 열기 테스트:
# read(10)을 이용하여 data.txt에 있는 모든 데이터를 출력하기
file = open('./data/data.txt', 'rt')
while True:
data = file.read(10)
if not data:
break
print(data, end="")
파일 열기 테스트: 0
파일 열기 테스트: 1
파일 열기 테스트: 2
파일 열기 테스트: 3
파일 열기 테스트: 4
파일 열기 테스트: 5
파일 열기 테스트: 6
파일 열기 테스트: 7
파일 열기 테스트: 8
파일 열기 테스트: 9
문제
키보드로 데이터를 입력하고 텍스트 파일에 저장하는 프로그램을 작성해보자(단, 'quit'이 입력되면 저장을 끝내고 프로그램을 종료)
- 단어를 입력하세요: apple
- 단어를 입력하세요: banana
- 단어를 입력하세요: orange ...
- 단어를 입력하세요: quit 저장되었습니다.
while True:
data = input('단어를 입력하세요: ')
if data.lower() != 'quit':
file = open('./data/test.txt', 'at')
file.write(data + '\n')
else:
file.close()
break
단어를 입력하세요: QUIT
# 선생님 답안
file = open('./data/word.txt', 'w')
while True:
data = input('단어를 입력하세요: ')
if data.lower() == 'quit':
break
file.write(data + '\n')
file.close()
단어를 입력하세요: 바나나
단어를 입력하세요: 애플
단어를 입력하세요: 사과
단어를 입력하세요: QUIT
1-4. with 문
- 자원을 획득하고 사용 후 반납해야 하는 경우 블록으로 사용하는 문장
with open('./data/word.txt', 'w') as f:
while True:
data = input('단어를 입력하세요: ')
if data.lower() == 'quit':
break
f.write(data + '\n')
# file.close() 가 여기서는 필요가 없다.
단어를 입력하세요: 애플스토어
단어를 입력하세요: 에어팟 2
단어를 입력하세요: 에어팟 프로2
단어를 입력하세요: 감자바나나
단어를 입력하세요: 아보카도 스프
단어를 입력하세요: quit
1-5. readline()
- 텍스트파일을 한 줄씩 읽어서 처리
- 파일이 종료되어 더이상 읽을 수 없으면 빈 문자열 ' ' 을 읽어옴
with open('./data/word.txt', 'r') as f:
lines = []
while True:
line = f.readline()
if not line:
break
if len(line.strip()) != 0:
print(line, end="")
lines.append(line.strip())
print(lines)
애플스토어
에어팟 2
에어팟 프로2
감자바나나
아보카도 스프
['애플스토어', '에어팟 2', '에어팟 프로2', '감자바나나', '아보카도 스프']
1-6. readlines()
- 전체라인을 모두 읽어서 각 라인단위로 리스트에 raw string으로 저장
['애플스토어\n', '에어팟 2\n', '에어팟 프로2\n', '감자바나나\n', '아보카도 스프\n']
애플스토어
에어팟 2
에어팟 프로2
감자바나나
아보카도 스프
728x90
반응형
LIST
'파이썬' 카테고리의 다른 글
| 클로저(Closure) (0) | 2023.03.13 |
|---|---|
| 인코딩과 디코딩 (0) | 2023.03.13 |
| 예외 처리 (0) | 2023.03.13 |
| Special Method (0) | 2023.03.10 |
| 클래스의 상속 (0) | 2023.03.10 |