부스트캠프 AI에 합격해서 파이썬 공부를 다시 시작했다!
기본적으로 text 파일과 binary 파일로 나뉜다.
(모든 text 파일도 실제로는 binary 파일이긴하다)
text 파일
인간도 읽을 수 있는 문자열 형식으로 저장. 메모장으로 열면 확인이 가능하다.
ex) 파이썬 코드, HTML, TXT 파일
binary 파일
컴퓨터만 이해할 수 있는 이진법 형식의 파일. 메모장으로 열면 내용이 깨져보인다.
ex) 엑셀, 워드 파일 등
파이썬에서 with문은 Context Manager를 사용하여 리소스를 효율적으로 관리하는 구문이다.
주로 파일 입출력, 네트워크 연결, 쓰레드 락 등 리소스를 열고 닫는 작업에 사용된다.
with문은 코드 블록이 끝날 때 자동으로 리소스를 정리해주기 때문에, 리소스 누수를 방지할 수 있다.
파이썬은 파일처리를 위해서 open 키워드를 사용한다.
기본 문법은 open(파일이름, '모드')
모드 종류
모드 | 설명 |
---|---|
'r' | 읽기 모드. 파일이 존재해야 한다. |
'w' | 쓰기 모드. 파일이 존재하지 않으면 새로 생성하고, 파일이 존재하면 내용을 덮어쓴다. |
'a' | 추가 모드. 파일이 존재하지 않으면 새로 생성하고, 파일이 존재하면 내용의 끝에 데이터를 추가한다다. |
'b' | 바이너리 모드. (예: 'rb' , 'wb' ) |
't' | 텍스트 모드. (기본값, 예: 'rt' , 'wt' ) |
# 파일 읽기
with open('example.txt', 'r') as file:
content = file.read()
print(content)
# 파일 쓰기
# 파일이 존재하지 않으면 새로 생성하고, 기존 파일이 있다면 내용을 덮어쓴다.
with open('example.txt', 'w', encoding='utf8') as file:
file.write('Hello, World!')
# 파일 추가
# 파일의 끝에 문자열을 추가한다.
with open('example.txt', 'a') as file:
file.write('\nHello again!')
메서드 | 설명 |
---|---|
read(size=-1) | 파일에서 데이터를 읽는다. size 가 지정되지 않으면 전체 파일을 읽는다. |
readline(size=-1) | 파일에서 한 줄을 읽는다. size 가 지정되면 그 크기만큼 읽는다. |
readlines() | 파일에서 모든 줄을 읽어 리스트로 반환한다. |
write(string) | 파일에 문자열을 쓴다. |
writelines(lines) | 문자열 리스트를 파일에 쓴다. |
close() | 파일을 닫는다. |
import os
# 새로운 디렉토리 생성
os.mkdir('new_directory')
# 디렉토리 삭제
os.rmdir('directory_to_delete')
# 디렉토리 존재 확인
if os.path.exists('directory_name'):
print('디렉토리가 존재합니다.')
else:
print('디렉토리가 존재하지 않습니다.')
from pathlib import Path
# 새로운 디렉토리 생성
path = Path('new_directory')
path.mkdir()
# 디렉토리 삭제
path = Path('directory_to_delete')
path.rmdir()
# 디렉토리 존재 확인
path = Path('directory_name')
if path.exists():
print('디렉토리가 존재합니다.')
else:
print('디렉토리가 존재하지 않습니다.')
파이썬의 객체 직렬화(serialization)를 위한 모듈
객체를 영속화(persistence)하는 built-in 객체
저장해야하는 정보나 계산결과 등을 pickle을 활용해 저장한다.
예시
import pickle
# 객체 생성
data = {'name': 'Alice', 'age': 30, 'city': 'Wonderland'}
# 객체를 파일에 저장 (직렬화)
with open('data.pickle', 'wb') as f:
pickle.dump(data, f)
# 파일에서 객체 읽기 (역직렬화)
with open('data.pickle', 'rb') as f:
data = pickle.load(f)
print(data) # {'name': 'Alice', 'age': 30, 'city': 'Wonderland'}