240716 TIL #452 File handling

김춘복·2024년 7월 15일
0

TIL : Today I Learned

목록 보기
452/543
post-custom-banner

Today I Learned

부스트캠프 AI에 합격해서 파이썬 공부를 다시 시작했다!


File

종류

  • 기본적으로 text 파일과 binary 파일로 나뉜다.
    (모든 text 파일도 실제로는 binary 파일이긴하다)

  • text 파일
    인간도 읽을 수 있는 문자열 형식으로 저장. 메모장으로 열면 확인이 가능하다.
    ex) 파이썬 코드, HTML, TXT 파일

  • binary 파일
    컴퓨터만 이해할 수 있는 이진법 형식의 파일. 메모장으로 열면 내용이 깨져보인다.
    ex) 엑셀, 워드 파일 등


in Python

with문

  • 파이썬에서 with문은 Context Manager를 사용하여 리소스를 효율적으로 관리하는 구문이다.

  • 주로 파일 입출력, 네트워크 연결, 쓰레드 락 등 리소스를 열고 닫는 작업에 사용된다.

  • with문은 코드 블록이 끝날 때 자동으로 리소스를 정리해주기 때문에, 리소스 누수를 방지할 수 있다.


open

  • 파이썬은 파일처리를 위해서 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()파일을 닫는다.

directory 다루기

  • os 모듈(파이썬 내장)
import os
# 새로운 디렉토리 생성
os.mkdir('new_directory')
# 디렉토리 삭제
os.rmdir('directory_to_delete')
# 디렉토리 존재 확인
if os.path.exists('directory_name'):
    print('디렉토리가 존재합니다.')
else:
    print('디렉토리가 존재하지 않습니다.')
  • pathlib 모듈(객체지향방식. path를 객체로 다룸)
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('디렉토리가 존재하지 않습니다.')

Pickle

파이썬의 객체 직렬화(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'}
profile
Backend Dev / Data Engineer
post-custom-banner

0개의 댓글