파일 입출력은 파일로부터 데이터를 읽거나 프로그램에서 만든 데이터를 파일 형태로 저장하기 위해 사용한다.

  • w: 쓰기 모드 (write) - 덮어쓰기
  • a: 추가 모드 (append) - 이어쓰기
  • r: 읽기 모드 (read)

파일 쓰기

파일객체 = open('파일이름', '파일모드')
파일객체.write(데이터)
파일객체.close()

file = open('data.txt', 'w', encoding='utf8')
file.write('파일 쓰기')
file.close()

파일 읽기

파일객체 = open('파일이름', '파일모드')
파일객체.read()
파일객체.close()

file = open('data.txt', 'r')
data = file.read()
print(data)
file.close()

한 줄 씩 파일 읽기

while True:
    data = file.readline()
    print(data)
    if data == "":
        break
file.close()

with 구문 사용하기

with 구문을 사용하면 file.close()를 자동으로 호출한다.

with open('data.txt', 'r') as file:
    data = file.read()

pickle 모듈

pickle은 파일에 파이썬 객체를 저장하기 위해 사용하는 모듈이다.

파이썬 객체를 pickle로 저장하기

import pickle

data = {
    '1': '파',
    '2': '일'
}
file = open('data.pickle', 'wb')
pickle.dump(data, file)
file.close() 

여기서 파일모드 ‘wb’는 바이너리 모드로 컴퓨터가 바로 읽을 수 있는 바이너리 파일로 저장하는 옵션이다.

pickle 파일 파이썬으로 가져오기

이번에는 pickle 파일을 read binary 모드로 열어준다.

file = open('data.pickle', 'rb')
data = pickle.load(file)
print(data)
file.close()

csv 파일

csv 파일은 comma-separated values의 약자로 데이터가 콤마로 구분된 텍스트 파일 형식이다.

csv 파일 쓰기

import csv

data = [
		["이름", "반", "번호"],
		["A", 1, 20],
		["B", 3, 8],
		["C", 5, 32]
]

file = open("test.csv", "w")
# file = open("test.csv", "w", newline="", encoding='utf-8-sig')
writer = csv.writer(file)
for d in data:
		 writer.writerow(d)
file.close()

newline은 윈도우 환경에서 csv 파일을 만들 때 한줄 씩 띄워지는 것을 막는 옵션이다. encoding을 utf-8-sig로 하면 vscode 상에서도 파일을 깨지지 않은 상태로 볼 수 있다.

csv 파일 읽기

file = open("test.csv", "r")
reader = csv.reader(file)
for d in reader:
		 print(d)
file.close()