• 검색 결과가 없습니다.

22장. 파일 입출력

N/A
N/A
Protected

Academic year: 2022

Share "22장. 파일 입출력"

Copied!
17
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

IT응용공학과 허석렬

[email protected]

22장. 파일 입출력

(2)

파일입출력

 컴퓨터 프로그램 실행에 있어서 많이 사용되는 대표적인 입 력과 출력 방식이 존재함

입력: 키보드, 마우스

출력: 화면, 스피커, 프린터

 때로는 프로그램을 실행할 때 이미 저장된 것을 입력으로 사 용해야 할 경우가 있으며, 출력의 경우에도 화면이나 스피커 가 아닌 파일 형태로 저장해야 할 경우가 있음

프로그램에서 사용하는 변수는 일시적이며 프로그램 실행 을 중단하면 모두 사라짐

나중에 사용할 수 있게 정보를 저장하고 싶다면 하드디스 크 같이 좀 더 영구적인 어딘가에 저장해야 함

(3)

파일이란

 컴퓨터는 정보를 이진(binary)형태, 즉 0과 1만을 사용하 는 방식으로 저장함. 0과 1을 bit라 하고 8개의 bit로 구성 된 것을 byte라고 함.

 파일은 이름이 있고 하드디스크, CD, DVD, USB 또는 다 른 종류의 저장 장치에 저장되어 있는 바이트의 모음

 파일은 다양한 종류의 정보를 저장할 수 있음

텍스트, 사진, 음악, 컴퓨터 프로그램 등

 파일은 아래와 같은 특성을 가짐

이름

파일에 들어 있는 데이터의 종류를 가리키는 유형:사진,음악

위치: 파일이 저장되어 있는 곳

크기: 파일에 들어 있는 바이트 수

(4)

파일

 보통의 파일명에는 최소한 하나의 점이 포함됨

 점 다음에 오는 부분이 파일의 종류를 알려줌

 확장자 (extension)라고 함

 파일명은 사용자가 원하는 대로 지정할 수 있고 어 떤 확장자도 사용할 수 있음

 텍스트 파일을 확장자 .mp3로 지정하여도 사운드 파일이 만들어 지지는 않음

 파일의 이름을 지을 때에는 해당 파일의 종류와 부

합하는 파일 확장자를 사용하는 것이 바람직함

(5)

파일의 위치

 지금까지는 프로그램과 같은 곳에 저장된 파일을 다루었 기 때문에 파일의 이름으로만 처리(18장 이미지 파일, 19 장 사운드 파일 등)

 모든 파일은 어딘가에 저장되어야 하기 때문에 이름과 더 불어 모든 파일에는 위치가 있음.

 하드디스크와 같은 저장장치는 폴더 또는 디렉토리로 구 성되어 있음

 파일의 위치는 경로(path)로 표시함

(6)

파일열기

 파일을 열기 전에 파일을 이용해 무슨 일을 할지 알아야 함

파일을 입력으로 사용할 거라면 파일을 읽기 용도로 염

새로운 파일을 생성하거나 기존 파일을 새로운 파일로 대체 하려면 파일을 쓰기 용도로 염

기존 파일에 추가하려면 파일을 추가 용도로 염

 파일을 열면 파이썬에 파일 객체가 만들어짐

my_file = open(‘my_filename.txt, ‘r’)

 파일 객체와 파일명의 차이

파일을 열고 파일객체를 생성하고 나면 파일명을 더 이상 사 용할 필요가 없음. 프로그램 내부에서는 모두 파일 객체를 사

(7)

파일 읽기

 파이썬 내장 open( ) 함수를 이용해 파일을 열고 파일 객체 를 생성.

my_file = open(‘notes.txt’, ‘r’) #파일 객체 생성

lines = my_file.readlines( ) #전체파일을 읽어 리스트로 만듦

 파일 읽기 예제

 파일을 모두 처리하고 나면 파일을 닫아야 함

my_file.close( )

notes.txt

(8)

번에 한 줄씩 읽기

 readlines( )메서드는 파일의 끝 바로 전까지 파일의 모든 줄 을 읽음. 파일을 한 번에 한 줄씩 읽고 싶다면 readline( ) 메 서드를 사용

first_line = my_file.readline( ) #한 줄만 읽음

 readline( )을 여러 번 이용해서 파일 읽기

 readline( )은 한 번에 한 줄만 읽기 때문에 결과를 리스트에 넣지 않음. readline( )을 사용할 때마다 문자열 하나가 반환 됨

(9)

처음으로 되돌아 가기

 readline( ) 을 몇 번 사용한 후 파일이 시작하는 부 분으로 되돌아가고 싶다면 seek( ) 메서드를 사용하 면 됨

 seek( ) 메서드는 파이썬으로 하여금 파일 내에서

사용자가 지정한 곳으로 가도록 함. 괄호 안에 지정

한 숫자는 파일이 시작하는 지점을 기준으로 한 바

이트 수.

(10)

텍스트 파일과 바이너리 파일

 파일에는 두 가지 종류가 있음

텍스트 파일: 글자, 숫자, 기호, 특수문자와 같은 텍스트

바이너리 파일: 텍스트가 담겨 있지 않음. 음악, 사진 등 의 데이터가 담겨 있으며 텍스트 파일과 달리 줄(line)이 라는 것이 없음

 바이너리 파일에 대해서는 readline( )이나 readlines( ) 메서드를 사용할 수 없음. 다른 방법은 파일을 불러오 는 모듈을 이용해야 함

pygame.mixer.load(‘bg_music.mp3’)

my_music_file = open(‘bg_music.mp3’, ‘rb’)

(11)

파일에 쓰기

 프로그램에서 처리한 정보를 영구적으로 저장하는 방법은 하드디스크에 저장하는 것임. 프로그램을 종료하거나 컴퓨 터를 끈 상태에서도 데이터가 하드 디스크에 보관됨

 파일에 데이터를 넣는 방법

쓰기: 새 파일을 만들거나 기존 파일을 덮어쓰는 것

추가: 기존 파일에 추가하는 것으로 기존 파일을 유지

 파일에 쓰거나 추가하려면 먼저 파일을 열어야 함

my_file = open(‘new_notes.txt’, ‘r’) # 읽기 용도

my_file = open(‘new_notes.txt’, ‘w’) # 쓰기 용도

my_file = open(‘new_notes.txt’, ‘a’) #추가 용도

읽기+쓰기, 읽기+추가 의 조합이 가능

(12)

파일에 추가하기

 파일 추가 모드 사용하기

 파일에 문자열을 쓰려면 write( )메서드를 사용

 파일을 읽고 작업을 마칠 때와 마찬가지로 쓰기를 마쳤을 때도 close( )를 사용해서 파일을 닫아야 함

 close( )로 파일을 닫지 않으면 변경사항이 저장되지

않음

(13)

파일에 쓰기

 쓰기 모드를 이용한 쓰기 예제: write( ) 이용

 기존 파일에 쓰기 모드 사용하기 예제

(14)

print를 이용해 파일에 쓰기

 print를 이용해 파일에 쓰는 것도 가능

 파일을 쓰기 모드나 추가 모드로 연 다음 print를 이용해 서 파일에 쓸 수 있음

 >> 기호는 print 출력 결과를 화면이 아닌 파일로 보내 라는 것을 의미. 이를 출력 재지정(redirection)이라고 함

 write( )대신에 print를 사용하면 print가 자동으로 숫자 를 문자열로 변환하는 등의 작업을 대신해 주기 때문에 더 편리한 경우도 있음

(15)

파일에 저장하기: pickle

 텍스트나 바이너리가 아닌 리스트나 객체 같은 것을 저장 하려면 어떻게 해야 할까?

리스트 안에는 다양한 종류의 항목이 존재

객체는 다양한 속성을 가지고 있음

 객체의 속성을 문자열로 변환한 다음에 텍스트 파일로 쓸 수도 있지만…

파일에서 객체로, 또 이와 반대의 작업을 할 경우에는 문제가 복잡해 짐

 파이썬에는 리스트나 객체 같은 것들을 더 쉽게 저장할 수 있는 방법을 제공함

pickle 모듈

(16)

피클링

 다양한 데이터로 구성된 리스트를 고려해보면…

>>>my_list = [ ‘Fred’, 73, ‘Hello there’, 81.987e-13]

 pickle 모듈 import 후 “피클”을 만들기 위해 dump( )함수 를 사용

>>>import pickle

>>>pickle_file = open(‘my_pickled_list.pkl’, ‘w’)

>>>pickle.dump(my_list, pickle_file)

 어떤 종류의 자료구조도 파일로 저장할 수 있음

(17)

언피클링

 피클 형태로 저장된 데이터를 원래 상태의 데이터 로 되돌릴 수 있음

 피클된 데이터를 “언피클링”하는 함수는 load( )

 load( )함수에 피클로 된 데이터가 저장된 파일 객체 를 지정하면 원래 형태로 된 데이터가 반환됨

 load( )를 이용한 언피클링

참조

관련 문서

[r]

[r]

[r]

따라서 점자프린터가 켜 져 있는 비활성 상태에서는 3분정도 경과하면 자동으로 저전력 모드로 설정되어 최소의 전력소모 상태로 전환됩 니다... 시각장애인 들의 편리한 사용을 위해

ios_base::beg 파일의 처음 위치를 기준으로 새로운 위치로 이동 ios_base::cur 파일의 현재 위치를 기준으로 새로운 위치로 이동 ios_base::end 파일의

setf와 unsetf 멤버 함수를 이용한 입출력 형식 지정 setf 이외의 멤버 함수를 이용한 입출력 형식 지정 입출력 조작자를 이용한 입출력 형식 지정.. 사용자

입출력 인터페이스, 입출력 채널(channel), 입출력 프로세서, 입출력 제어기 (controller), 장치 제어기(device controller) 등의 여러 가지

Caption 메뉴 항목에 출력되는 문자열로 엑세스키 설정 시 해당 문자 앞에 &를 붙 인다.. Separator 메뉴 항목들을