다운로드
작성자: admin 작성일시: 2016-07-10 17:53:25 조회수: 5100 다운로드: 184
카테고리: Python 태그목록:

파이썬의 파일 입출력

일반 파일 입출력

open 명령을 사용하면 파일 시스템 상에 새 파일을 생성하거나 존재하는 파일을 읽어들일 수 있다.

open 명령을 사용하려면 파일 이름 문자열과 파일 모드(mode) 문자열을 입력한다. 파일 모드 문자열의 종류는 다음과 같다.

  • r : 읽기
  • w : 쓰기
  • a : 첨부

파일 모드 문자열에 + 문자가 붙어있으면 기존에 파일이 존재하고 있다고 가정하므로 파일 없는 경우 에러가 발생한다.

새 파일 생성

In:
%rm -f foo.txt
In:
f = open("foo.txt", "w")
In:
%ls foo.txt
foo.txt
In:
%cat foo.txt

파일에 쓰기

open 명령은 생성되거나 열린 파일에 대한 파일 객체를 생성하는데 이 파일 객체는 다음과 같은 메서드를 제공한다.

  • read: 1 바이트 읽기
  • readline: 1줄 읽기
  • readlines: 모든 줄을 읽어서 리스트로 반환
  • write: 문자열 쓰기
  • writelines: 리스트에 있는 모든 문자열 쓰기
  • close: 파일 객체 닫기

파일 객체를 사용한 다음에는 꼭 close 메서드를 호출하여 닫아야 한다.

In:
f.write("hearder line\n")
In:
f.writelines(["line " + str(i) + "\n" for i in range(10)])
In:
f.close()
In:
%cat foo.txt
hearder line
line 0
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9

파일 읽기

In:
f = open("foo.txt", "r+")
In:
l = f.readline()
while l != "":
    l = f.readline()
    print(l)
line 0

line 1

line 2

line 3

line 4

line 5

line 6

line 7

line 8

line 9


In:
f.close()
In:
f = open("foo.txt", "r+")
In:
f.readlines()
Out:
['hearder line\n',
 'line 0\n',
 'line 1\n',
 'line 2\n',
 'line 3\n',
 'line 4\n',
 'line 5\n',
 'line 6\n',
 'line 7\n',
 'line 8\n',
 'line 9\n']

파이썬 객체 저장하고 읽기

파이썬을 사용하다가 생성된 파이썬 객체를 그대로 파일로 저장하거나 다시 파일에서 읽어들기기 위해서는 pickle 또는 cPickle 패키지를 사용한다. cPickle 은 pickle 보다 속도가 빠른 버전이다.

이 패키지들은 dumpload 라는 명령을 제공하는데 각각 파이썬 객체를 저장하고 읽어들이는 역할을 한다.

파이썬 객체를 저장하는 경우에는 보통 .pkl이라는 확장자를 사용하는 것이 관례이다.

In:
np.random.seed(0)
In:
x = np.random.rand(10)
x
Out:
array([ 0.5488135 ,  0.71518937,  0.60276338,  0.54488318,  0.4236548 ,
        0.64589411,  0.43758721,  0.891773  ,  0.96366276,  0.38344152])
In:
y = np.random.rand(10)
y
Out:
array([ 0.79172504,  0.52889492,  0.56804456,  0.92559664,  0.07103606,
        0.0871293 ,  0.0202184 ,  0.83261985,  0.77815675,  0.87001215])
In:
%rm -f x.pkl, y.pkl
In:
from cPickle import dump, load
In:
f = open("x.pkl", "w")
dump(x, f)
f.close()
In:
f = open("y.pkl", "w")
dump(y, f)
f.close()
In:
%ls *.pkl
x.pkl  y.pkl
In:
del x, y
In:
f = open("x.pkl", "r")
x = load(f)
f.close()
In:
f = open("y.pkl", "r")
y = load(f)
f.close()
In:
x
Out:
array([ 0.5488135 ,  0.71518937,  0.60276338,  0.54488318,  0.4236548 ,
        0.64589411,  0.43758721,  0.891773  ,  0.96366276,  0.38344152])
In:
y
Out:
array([ 0.79172504,  0.52889492,  0.56804456,  0.92559664,  0.07103606,
        0.0871293 ,  0.0202184 ,  0.83261985,  0.77815675,  0.87001215])

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!