Python 파일 입출력 기본개념

2022-03-19

.

Python_studynote(20220319)

[학습자료]

패스트 캠퍼스 “초격차 패키지 : 한 번에 끝내는 파이썬 웹 개발” 강의를 공부하고 정리한 내용입니다.

** URL : https://fastcampus.co.kr/dev_online_pyweb

[학습내용]

  • 파일 입출력의 기본과정

파일 열기 –> 파일 작업 –> 파일 닫기

  • 파일 열기 모드는 아래와 같이 3가지가 있다.

(1) w : write (덮어쓰기)

(2) a : append (이어쓰기)

(3) r : read

  • 파일 쓰기 파이썬 코드 예시
# 만약에 my_data.txt 라는 파일이 없으면 새로 만들게 된다.
file = open("my_data.txt","w",encoding="utf8")
file.write("1.오늘은 비가오는 날씨임")
file.close()

위에 코드를 실행하면 my_data.txt 가 생성이 되었을 것이다.

my_data.txt를 열어보면 내용은 아래와 같다.

1.오늘은 비가오는 날씨임
  • 이번에는 append 모드로 내용을 추가해보자.
file = open("my_data.txt","a",encoding="utf8")
file.write("\n2.심심해서 카페나 왔다")
file.close()

my_data.txt를 열어보면 내용은 아래와 같다.

1.오늘은 비가오는 날씨임
2.심심해서 카페나 왔다
  • 이번에는 read 모드로 파일 내용을 읽어보자.

(1) 파일 전체를 한꺼번에 읽는 방법

file = open("my_data.txt","r")
print(file.read())
file.close()
1.오늘은 비가오는 날씨임
2.심심해서 카페나 왔다

(2) 파일 내용을 한줄씩 읽는 방법

file = open("my_data.txt","r")

while True:
    data = file.readline()
    print(data,end="")
    if data == "":
        break
file.close()
1.오늘은 비가오는 날씨임
2.심심해서 카페나 왔다
  • pickle 모드란 파일에 파이썬 객체를 저장하는 모드임

(1) 파일에 파이썬 객체 저장하기

import pickle

data = {
    "목표 1" : "디카페인 커피 마시기",
    "목표 2" : "계단 오르기"
}

# "wb" : write binary
# 바이너리 모드는 컴퓨터가 바로 읽을수 있는 데이터 형식이다.
file = open("data.pickle","wb")
pickle.dump(data,file)
file.close()

(2) 파일로부터 파이썬 객체 읽기

import pickle

# "rb" : read binary
file = open("data.pickle","rb")
data = pickle.load(file)
print(data)
file.close()
{'목표 1': '디카페인 커피 마시기', '목표 2': '계단 오르기'}
  • with 구문

with 구문을 사용하는 이유는 file.close()가 매번 반복적으로 사용하다 보니까 with 구문을 쓰게 되면 자동으로 마지막에 file.close()를 호출하게 된다.

(1) with 구문 사용하지 않는 경우

file = open("my_data.txt","r",encoding="utf8")
print(file.read())
file.close()
1.오늘은 비가오는 날씨임
2.심심해서 카페나 왔다

(2) with 구문을 사용하는 경우

with open("my_data.txt","r",encoding="utf8") as file:
    data = file.read()
    print(data)
1.오늘은 비가오는 날씨임
2.심심해서 카페나 왔다
  • csv : comma-seperated values 의 약자로 데이터가 콤마로 구분된 텍스트 파일 형식

(1) csv 파일 쓰기 예시

import csv

data = [
    ["이름","반","번호"],
    ["홍길동","1","2"],
    ["장영실","2","3"],
    ["고길동","3","10"]
]

file = open("student.csv","w")
writer = csv.writer(file)
for d in data:
    writer.writerow(d)
file.close()

(2) csv 파일 읽기 예시

import csv

file = open("student.csv","r")
reader = csv.reader(file)
for d in reader:
    print(d)
file.close()
['이름', '반', '번호']
['홍길동', '1', '2']
['장영실', '2', '3']
['고길동', '3', '10']