728x90
파일 입출력
- open 함수
- 파일을 열 수 있는 함수
- 파일 객체를 반환
- w: 쓰기 모드
- a: 추가 모드
- r: 읽기 모드
- 쓰기 모드 (w)
예시
f = open("memo.txt","w")
for i in range(1,11):
data = f"{i} 번째 줄\n"
f.write(data) # 파일 안에 쓰겠다.
f.close()
위와 같이 for문을 이용하여 1부터 10까지 반복하여 글이 txt파일로 저장되도록 하였다.
쓰기 모드로 여는 순간 기존 파일에 내용을 덮어띄우기 떄문에 내용이 사라진다는 특징이 있다.
- 추가 모드 (a)
예시
f = open("memo.txt","a")
data = "11 번째 줄\n"
f.write(data)
f.close()
추가 모드는 단순히 내용을 추가하는 것으로 11번 째 줄을 넣어보았다.
- 읽기 모드 (r)
예시
f = open("memo.txt","r")
data = f.read() # 파일 전체의 내용을 읽어서 반환한다.
f.close()
print(data)
=> 1 번째 줄
2 번째 줄
3 번째 줄
4 번째 줄
5 번째 줄
6 번째 줄
7 번째 줄
8 번째 줄
9 번째 줄
10 번째 줄
11 번째 줄
읽기 모드를 사용하여 내가 이때까지 쓴 것과 추가한 것을 종합적으로 나타낼 수 있다.
- with 문
- 자동으로 파일을 닫아준다.
with open("memo.txt","r") as f: # open 함수로 인해 반환된 파일 객체를 f 변수가 받아준다.
data = f.read()
print(data)
=> 1 번째 줄
2 번째 줄
3 번째 줄
4 번째 줄
5 번째 줄
6 번째 줄
7 번째 줄
8 번째 줄
9 번째 줄
10 번째 줄
11 번째 줄
with 문을 쓰면 close를 따로 안해도 닫아주기 때문에 편리하다.
주로 with 문을 많이 쓴다고 한다.
그리고 with 문은 파일을 자동으로 닫아주기 때문에 다음처럼 메소드를 실행 시 오류가 발생한다.
f.read()
=> ---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-10-571e9fb02258> in <module>()
----> 1 f.read()
ValueError: I/O operation on closed file.
구글 드라이브 연결해서 파일 가져오기
- 마운트(mount)란?
- 리눅스 환경에서 하드디스크나 usb 메모리 같은 물리적인 장치를 사용하기 위해 리눅스 환경에서 지정한 디렉토리에 연결해주는 과정을 말한다.
방법
from google.colab import drive
drive.mount('/content/drive')
=> Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
다음과 같이 하면 마운트를 할 수 있다!
DATA_PATH = "/content/drive/MyDrive/01-Python/data/"
DATA_PATH # 데이터 경로 지정
readlines()를 활용하면 리스트 형태로 담을 수도 있다.
with open(f"{DATA_PATH}memo.txt","r") as f:
data = f.readlines()
print(data)
=> ['1 번째 줄\n', '2 번째 줄\n', '3 번째 줄\n', '4 번째 줄\n', '5 번째 줄\n', '6 번째 줄\n', '7 번째 줄\n', '8 번째 줄\n', '9 번째 줄\n', '10 번째 줄\n', '11 번째 줄\n']
JSON 파일 입출력
- 자바스크립트에서 사용되는 객체 표현식
- 데이터를 저장하거나 전송할 때 많이 사용
- 서버와 클라이언트간의 데이터 전송과정에서 많이 사용
- 파이썬의 딕셔너리와 매우 유사
- JSON 선언
import json
DATA_PATH
=> /content/drive/MyDrive/01-Python/data/
사용 예시
with open(f"{DATA_PATH}info.json","r") as f:
data = json.load(f) # json 파일을 딕셔너리 형태로 변환해서 반환
data
=> {'Daniel': {'age': 20, 'height': 170},
'John': {'age': 20, 'height': 175, 'weight': 80}}
-----------------------------------------------------------------------
# 데이터 추가
data["용석"] = {"age":42}
data
=> {'Daniel': {'age': 20, 'height': 170},
'John': {'age': 20, 'height': 175, 'weight': 80},
'용석': {'age': 42}}
-----------------------------------------------------------------------
# 파일 저장
with open("info.json", "w") as f:
# 현재 디렉토리에 저장, ensure_ascii=False => 한글 출력, indent = ? => ?칸 들여쓰기
json.dump(data,f,ensure_ascii=False,indent = 4)
YAML(Yet Another Markup Language)
- 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식
- 데이터를 저장하거나 전송할 때 많이 사용
예시
import yaml
with open("data.yml","w") as f: # 라이브러리가 달라 형식이 다르다
yaml.dump(data,f,default_flow_style = False, indent = 4, allow_unicode=True) # 이 형식 많이 사용
------------------------------------------------------------------------------------------------------
# 딕셔너리 전환
with open("data.yml","r") as f:
data1 = yaml.load(f)
type(data1)
=> dict
------------------------------------------------------------------------------------------------------
data1
=> {'Daniel': {'age': 20, 'height': 170},
'John': {'age': 20, 'height': 175, 'weight': 80},
'용석': {'age': 42}}
pickle 모듈
- 우리가 사용하는 다양한 객체들을 파일로 저장하고 싶다면?
- 객체의 구조를 직렬화해서 파일로 저장한다.
예시
import pickle # 데이터 쓰기
data = [1,2,3,4,[10,20],"hi"]
with open("data.pkl","wb") as f:
pickle.dump(data, f)
------------------------------------
# 데이터 읽기
with open("data.pkl","rb") as f:
rdata = pickle.load(f)
rdata
=> [1, 2, 3, 4, [10, 20], 'hi']
pickle 모듈은 차이점은 w를 쓰지않고, wb를 쓴다. 또한 클래스와 인스턴스도 저장이 가능하다..!
오늘 수업은 정신없이 이것저것 많이 배웠다.
다 기억할 자신이 없어 여기다 내가 나중에봐도 알게끔 정리하였다.
복습만이 살길...
728x90
'AI 공부 > 파이썬' 카테고리의 다른 글
파이썬 (Pymysql) (0) | 2022.08.23 |
---|---|
파이썬 (pip와 가상 환경) 마지막! (0) | 2022.08.10 |
파이썬 (정규 표현식, 메타문자) (0) | 2022.08.09 |
파이썬 (iterable & iterator와 Generator) (0) | 2022.08.09 |
파이썬 (collections, defaultdict, OrdereDdict 모듈) (0) | 2022.08.08 |
댓글