전 포스팅에서는 write() 함수를 사용해서 파일을 출력했다.
하지만 write() 함수는 문자열만 출력할 수 있기 때문에 다른 타입의 데이터를 출력하려면 pikcle모듈을 사용해야한다.
이번 시간에는 pickle 모듈에 대해 알아보고 close()함수를 쓰지 않고도 자동적으로 파일을 닫아주는 명령어인 with에 대해 알아보자.
1 pickle 모듈
텍스트 파일로 저장할 때 사용하는 모듈이다. 다양한 자료형을 파일로 저장한다.
pickle로 데이터를 저장하고 불러올 때는 파일을 바이트 형식으로 읽거나 쓴다. ex) 'wb', 'rb'
파일명.bin 으로 이진파일로 사용하는 것이 좋으며 import 후 사용한다.
pickle 모듈내에는 데이터를 파일내에 저장하는 함수인 dump() 와 저장된 내용을 읽어오는 함수인 load()가 있다. 사용방법을 다음과 같다.
dump(데이터, 파일) # 데이터를 파일내에 저장하는 함수
load(파일) # 파일을 읽어오는 함수
다음은 pickle 모듈을 이용하여 여러 타입의 데이터를 입력시킨 예제이다.
1
2
3
4
5
6
7
8
9
10
11
|
from pickle import *
f = open("byte_fule.bin",'wb')
dump('hello world', f) # <class 'str'>
dump(1234,f) # <class 'int'>
dump(3.14,f) # <class 'float'>
dump([1,2,3,4,5],f) # <class 'list'>
dump({1:"python",2:"java"},f) # <class 'dict'>
f.close()
|
cs |
위와같이 코드 입력 후 run해주면 아래와 같이 byte_fule.bin 파일이 생성되고 파일 이를 메모장으로 열면 알아볼 수 없는 형식으로 데이터가 입력되어있다.
따라서 우리는 데이터를 읽기 위해 load() 함수를 사용한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# pickle 모듈을 읽어온다.
f = open("byte_fule.bin",'rb')
d = load(f)
print(d, type(d)) # 첫번째 저장한 dump
d = load(f)
print(d, type(d)) # 두번째 저장한 dump
d = load(f)
print(d, type(d)) # 세번째 저장한 dump
d = load(f)
print(d, type(d)) # 네번째 저장한 dump
d = load(f)
print(d, type(d)) # 다섯번째 저장한 dump
f.close()
|
cs |
파일 f를 pickle 모듈의 load() 함수를 이용해 d에 저장하고 d값과 d의 타입을 출력한다. load()함수는 데이터를 한줄씩 읽어오기 때문에 (readline()와 같음.) 다섯번 반복하여 작성해주고 코드를 run해주면 다음과 같이 출력된다.
3 with
파일을 자동으로 닫는 역할을 한다. 사용 방법은 다음과 같다.
with open("파일명 경로",'모드') as 객체:
다음 예제로 with를 사용하여 현재 소스코드를 작성하고 있는 디렉터리 외의 다른 디렉터리에 파일을 생성해보자.
# C드라이브 AAA폴더에 person.txt 만들기
1
2
|
with open('C:\\AAA\\person.txt','at') as out:
pass
|
cs |
open 모드를 'a'(append) 로 설정. 다음과 같이 C드라이브 AAA디렉터리에 생성된다.
위 예제와 저장경로를 같게 설정하고 with을 이용해 텍스트 파일을 저장, 쓰기모드로 안에 내용을 이름, 나이로 구성하고 이를 입출력해보자.
1
2
3
4
5
6
|
with open('C:\\AAA\\soonipy.txt','wt') as out:
name = input("이름>")
age = int(input("나이>"))
out.write("이름>%s\n"%name)
out.write("나이>%d"%age)
|
cs |
위와 같이 코드 작성 후 run해줘서 이름과 나이를 다음과 같이 입력해주었다. 그럼 해당 디렉터리에 입력해준 데이터가 저장된다.
'Python' 카테고리의 다른 글
[Python 기초] 파이썬 클래스 - 클래스 멤버(static) 와 접근제어자(public , private , getter , setter) (0) | 2021.04.05 |
---|---|
[Python 기초] 파이썬 클래스 - 오버라이딩 (overriding) (0) | 2021.04.05 |
[Python 기초] 파이썬 파일 다루기 - 읽기 : read(), readline(), readlines() (0) | 2021.04.05 |
[Python 기초] 파이썬 파일 다루기 - 쓰기 : open() , write() , close() (0) | 2021.04.05 |
[Python 기초] 파이썬 모듈 - sys.path 와 path.append() / 패키지 (packge) (0) | 2021.04.04 |
댓글