Python
21. 파일 입출력
muru_
2024. 3. 21. 17:19
# 운영체제의 힘을 빌려서 스트림을 통해 파일을 입출력
# 입력 : 밖에 있는 파일을 읽어올 때
# 출력 : 밖으로 파일을 생성할 때
# 열기 : 입력 + 출력
1. 파일 열기
파일을 열려면 open 함수를 사용합니다.
f = open("파일명", "모드")
파일명: 열고자 하는 파일의 이름이나 경로 모드: 파일을 어떻게 열 것인지를 지정
- r: 읽기 모드 (기본값)
- w: 쓰기 모드 (파일이 있으면 덮어쓰기)
- a: 추가 모드 (파일의 끝에 내용을 추가)
- b: 바이너리 모드 (텍스트가 아닌 바이너리 데이터를 읽고/쓸 때 사용)
- t: 일반적인 글자를 내보거나 읽어올 때 (생략 가능)
- +: 읽기와 쓰기 모드
2. 파일 쓰기
f = open('example.txt', 'w') # 바이너리 모드로 열리므로 줄바꿈 x
f.write('Hello, Python!\n') # 단일 문자열을 한번에
f.writelines(['Line1\n','Line2\n']) # 문자열 리스트를 반복적으로
f.close() # 이걸 해야지만 파일을 저장하고 닫음, 꼭! 해야함
example.txt 파일이 생성됨
( 내용 )
Hello, Python!
Line1
Line2
f = open('data.txt', 'wt') # 텍스트 모드로 열리므로 줄바꿈 o
for i in range(10):
f.write('파일 열기 테스트: ' + str(i) + '\n')
f.close()
print('data.txt 파일에 쓰기 완료')
data.txt 파일이 생성됨
( 내용 )
파일 열기 테스트: 0
파일 열기 테스트: 1
파일 열기 테스트: 2
파일 열기 테스트: 3
파일 열기 테스트: 4
파일 열기 테스트: 5
파일 열기 테스트: 6
파일 열기 테스트: 7
파일 열기 테스트: 8
파일 열기 테스트: 9
3. with 문
파일을 열고 작업을 수행한 후 자동으로 파일을 닫을 수 있음
( data 폴더에 word.txt 파일 생성하고 단어 입력 )
with open('./data/word.txt', 'w') as f:
while True:
data = input('단어를 입력하세요 : ')
if data.lower() == 'quit':
break
f.write(data + '\n')
4. 파일 읽기
# 1)전체 다 읽기
f = open('example.txt', 'r')
content = f.read() # 10글자 읽을 떈 f.read(10)
print(content)
f.close()
# 2)10글자 읽기 반복
f = open('example.txt', 'r')
while True:
data = f.read(10) # 큰 파일일 경우 메모리, 처리 속도가 효율적
if not data: # 10글자씩 읽다가 더 이상 문자가 없으면 True
break
print(data, end='')
# 3)한 줄씩 읽기 반복
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)
# 4)readlines()로 읽고 출력
with open('./data/word.txt', 'r') as f:
lines = f.readlines() # 줄 바꿈까지 읽음
print(lines)
# 결과 : ['apple\n', 'banana\n', 'lemon\n']
# 5)\n 없애기
li = []
for i in lines:
li.append(i.replace('\n',''))
print(li)
# 결과 : ['apple', 'banana', 'lemon', 'orange']
5. 예외 처리와 함께 사용하기
- 파일 입출력 중에는 여러 가지 오류가 발생할 수 있음 (예: 파일이 존재하지 않음).
- 이를 위해 try-except 블록을 사용해 오류를 처리할 수 있음
try:
with open('nofile.txt', 'r') as f:
content = f.read()
print(content)
except FileNotFoundError:
print('파일이 존재하지 않습니다')
# 결과 : 파일이 존재하지 않습니다
# 글을 쓰는 것보다 파일을 만들어주는 것이 좋음