Python 기초 정리 다섯 번째 시간. 오늘은 여러 가지 파일을 읽고 쓰는 구문을 메모를 해두려고 한다. 사실 이런 구문들은 갑자기 생각이 나지 않으면 결국에는 구글링을 해야 하는데, 그 시간이 가끔 좀 아까울 때가 있어서 .. 검색 없이 내 블로그에 혼자 와서 보고 바로 쓰면 좋을 것 같다. 바로 시작!
txt 읽기, 쓰기
# file management
file = open("README.txt", "r")
print(file.read())
file.close()
기본적인 구문은 위와 같지만, file.close()를 별도로 해주어야 하기에 선호되는 방식은 아니다.
# no close any more
with open("README.txt", "r") as file:
print(file.read())
with open("WRITEME.txt", "w") as file: # overwrite
print(file.write("Thanks"))
with open("WRITEME.txt", "a") as file:
print(file.write("Thanks"))
ML 모델을 저장한 pickle 등을 불러올 때 with 구문을 많이 사용했었는데, 기본적인 txt 파일을 읽을 때에도 위처럼 그냥 사용하면 될 것 같다.
위 코드를 살펴 보면, with open("경로 및 파일명", 방법) as file: 에서 "방법" 부분에 r, w, a 이렇게 되어 있는데, 각 내용은 다음과 같다.
r = read
w = write
a = append
여기에서 주의해야 할 점은, w는 항상 file을 overwrite를 한다. 계속해서 새로 덮어쓰고, append는 그 뒤에 추가적으로 작성한다.
csv 파일 읽기
csv 파일을 읽는 방법은 3가지가 있다.
첫 번째는 기본 open 함수, 두 번째는 csv package, 세 번째는 pandas를 이용하는 방법이다.
file = open("sample.csv", "r")
print(file.read())
file.close()
우선 csv 파일도 마찬가지로 open 함수를 사용해서 열 수 있다.
그러나 with 문을 주로 쓰기로 했으므로, 아래 구문을 메인으로 알아두자.
# using csv package
import csv
with open("sample.csv", "r") as data_file:
sample_data = csv.reader(data_file)
print(sample_data)
이건 csv library를 import해서 사용하는 방식이다.
그리고 마지막으로, 개인적으로는 pandas를 사용하는 것을 제일 선호한다.
sep 옵션만 잘 주면 dat 파일도 읽을 수 있기 때문. 여러모로 편리하다.
# using pandas
import pandas as pd
# csv file
data = pd.read_csv("sample.csv")
print(type(data))
print(data)
위와 같은 방식으로 사용하면 된다.
json 파일 읽기, 그리고 pprint
# JSON(Java Script Object Notation)
import json
from pprint import pprint
with open("sample.json", mode="r") as f:
data = json.loads(f.read())
pprint(data)
json 파일은 import json을 한 뒤, 다른 구문과 똑같이 파일을 읽으면 된다.
다른 게 있다면, json.loads()를 사용해준다는 것.
참고적으로 여기에서는 print(data)가 아니라 pprint(data)를 사용했는데,
pprint는 json 파일을 사람이 눈으로 보기 쉽게 출력을 해준다.
sample json 파일을 가지고 실행한 예시는 아래와 같다.
with open("sample.json", mode="w") as w:
w.write(json.dumps(data))
json 파일을 '쓰기'를 할 때는 위와 같이 하면 된다.
mode에는 w를 적고, json.dumps(data)를 사용한다.
pickle 읽기, pickle로 쓰기
load와 dump를 기억하면 된다.
import pickle
with open('data.pickle', 'rb') as f:
data = pickle.load(f)
pickle로 된 데이터를 읽는 코드는 간단하다. 여기서는 r 대신 'rb'라고 적고 사용한다.
r이 아닌 rb인 이유는 이게 binary file이기 때문.
Python 공식 문서(출처: https://docs.python.org/3/library/pickle.html)에서 자세한 내용을 확인할 수 있다.
with open('data.pickle', 'wb') as f:
pickle.dump(data, f)
pickle로 파일을 쓰는 건 마찬가지로 wb를 사용하면 된다.
w 이 아니고 wb인 이유는 역시 마찬가지로 binary 파일이기 때문.
정리 끝!
'Pyhon 기초, 실전' 카테고리의 다른 글
[Python 기초] 날짜 및 시간 다루기: datetime module 소개 (0) | 2023.07.18 |
---|---|
[Python 기초] list, dictionary comprehension and conditional comprehension (1) | 2023.07.17 |
[Python 기초] set과 tuple 그리고 tuple의 packing, unpacking (0) | 2023.07.14 |
[Python 기초] 주석(Docstring) 작성 스타일 (0) | 2023.07.13 |
[Python 기초] 변수의 범위(scope), nonlocal과 global 키워드 사용법 (0) | 2023.07.12 |