(파일에 데이터 읽고 쓰기)
※ 파일을 읽거나 쓰기 전에는 먼저 파일을 '열어야'하고, 용무를 마친 뒤에는 파일을 반드시 '닫아야' 함.
- 파일 열기/읽기-쓰기 닫기: 파일열기 <- file = open()
파일 읽기/쓰기 <- file.read()/file.write()
파일 닫기 <- file.close()
- 자원 누수 방지 : with~as
open() 함수와 함꼐 with~as문을 사용하면 명시적으로 close() 함수를 호출하지 않아도, 파일이 항상 닫힘.
사용방법:
with open(파일이름) as 파일객체 :
#코드블록
#이곳에서 읽거나
#쓰기를 한 후
#그냥 코드를 빠져 나감.
Q) close()함수를 호출하지 않아도, 자원 해제를 어떻게 하는 걸까? with문의 비밀 : 컨텍스트 매니저
- open() 함수
컴퓨터가 다루는 모든 파일은 바이너리 파일 임. 그 중 텍스트 데이터만 기록하고 있는 파일을 텍스트 파일이라고 함.
open() 함수는 코드에서 입력되는 매개변수에 따라 텍스트 파일을 처리할 것인가 또는 바이버리 파일을 처리할 것인가를 결정.
open() 함수는 모두 8개의 매개변수를 받아들이며, 이 매개변수들 중 하나의 필수 매개변수와 일곱 개의 선택적 매개변수로 이루어짐.
open() 함수의 반환값을 물론 파일 객체임.
open(file, mode= 'r', buffering= -1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
※open 함수의 두번째 매개변수인 mode에 주의!!!
파일을 읽기용으로 읽을 것인지 또는 쓰기용으로 읽을 것인지를 결정 + 텍스트 모드로 읽을 것인지 또는 바이너리 모드로 읽을 것인지를 이 변수에 넘긴 값으로 결정.
mode에 사용할 수 있는 값: 'r'(읽기용으로 기본값) ,w'(쓰기용으로 열기, 이미 같은 경로에 파일이 존재하면 파일내용을 비움), 'x'(배타적 생성모드로 열기),
'a'(쓰기용으로 열기, 같은 경로에 파일이 존재하면 내용 덧붙임), 'b'(바이너리 모드), 't'(텍스트 모드(기본값)), '+'(일기/쓰기용으로 파일 읽기)
4번째 매개변수인 encoding은 텍스트 파일을 다루는 데 있어서 매주 중요함. 당연히 텍스트 모드에서만 사용 가능
여섯 번째 매개변수인 newline은 파일을 읽고 쓸 대 줄바꿈은 어떻게 처리할지를 나타냄, 텍스트 모드에서만 사용
(None, '',\n, \r, \r\n e) <- 다섯가지 중 하나를 입력할 수도 있다
- 텍스트 파일 읽기/쓰기 : 텍스트 파일을 읽고 쓰는데 도움을 주는 파일 객체의 몇 가지 메소드 소개
○ 문자열을 담은 리스트를 파일에 쓰는 writelines() 메소드 : 리스트에 담아 사용중인 여러 줄의 문자열을 파일에 저장할 떄, writelines()는 문자열을 요소로 가지는 순서열 객체를 매개변수로 입력받아 해당 순서열
객체의 내용을 모두 파일에 기록함.
○ 줄 단위로 텍스트를 읽는 readline()과 readlines() 메소드 :
가장 많이 사용하는 메소드 두 가지 임.
readline() : 파일로부터 텍스트를 한 줄씩만 읽어옴. 이때 '한 줄'의 기준은 개행 문자가 됨.
readlines() : 파일의 모든 텍스트를 읽어들여 개행 문자 기준으로 요소를 삼는 리스트를 만들어 반환함.
cf) 파이썬3에서 제공하는 텍스트 인코딩
- 바이너리 파일 다루기 : 바이너리 파일은 메모리에 저장되어 있는 내용을 그대로 저장하고자 할 때 유용.
○ 파이썬에서 struct 모듈의 도움이 없이는 바이너리 파일을 제대로 다루기가 어려움.
○ pack() 함수(=일반 데이터를 byteㄴ 형식으로 변환하는 기능)와 unpack()함수(bytes 형식을 튜플 형식으로 변환하는 기능)
struct.pack(fmt, v1, v2, ...) # 데이터 -> bytes
structc.unpack(fmt, buffer) # bytes -> 튜플(데이터)(파일에 데이터 읽고 쓰기)
※ 파일을 읽거나 쓰기 전에는 먼저 파일을 '열어야'하고, 용무를 마친 뒤에는 파일을 반드시 '닫아야' 함.
- 파일 열기/읽기-쓰기 닫기: 파일열기 <- file = open()
파일 읽기/쓰기 <- file.read()/file.write()
파일 닫기 <- file.close()
- 자원 누수 방지 : with~as
open() 함수와 함꼐 with~as문을 사용하면 명시적으로 close() 함수를 호출하지 않아도, 파일이 항상 닫힘.
사용방법:
with open(파일이름) as 파일객체 :
#코드블록
#이곳에서 읽거나
#쓰기를 한 후
#그냥 코드를 빠져 나감.
Q) close()함수를 호출하지 않아도, 자원 해제를 어떻게 하는 걸까? with문의 비밀 : 컨텍스트 매니저
- open() 함수
컴퓨터가 다루는 모든 파일은 바이너리 파일 임. 그 중 텍스트 데이터만 기록하고 있는 파일을 텍스트 파일이라고 함.
open() 함수는 코드에서 입력되는 매개변수에 따라 텍스트 파일을 처리할 것인가 또는 바이버리 파일을 처리할 것인가를 결정.
open() 함수는 모두 8개의 매개변수를 받아들이며, 이 매개변수들 중 하나의 필수 매개변수와 일곱 개의 선택적 매개변수로 이루어짐.
open() 함수의 반환값을 물론 파일 객체임.
open(file, mode= 'r', buffering= -1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
※open 함수의 두번째 매개변수인 mode에 주의!!!
파일을 읽기용으로 읽을 것인지 또는 쓰기용으로 읽을 것인지를 결정 + 텍스트 모드로 읽을 것인지 또는 바이너리 모드로 읽을 것인지를 이 변수에 넘긴 값으로 결정.
mode에 사용할 수 있는 값: 'r'(읽기용으로 기본값) ,w'(쓰기용으로 열기, 이미 같은 경로에 파일이 존재하면 파일내용을 비움), 'x'(배타적 생성모드로 열기),
'a'(쓰기용으로 열기, 같은 경로에 파일이 존재하면 내용 덧붙임), 'b'(바이너리 모드), 't'(텍스트 모드(기본값)), '+'(일기/쓰기용으로 파일 읽기)
4번째 매개변수인 encoding은 텍스트 파일을 다루는 데 있어서 매주 중요함. 당연히 텍스트 모드에서만 사용 가능
여섯 번째 매개변수인 newline은 파일을 읽고 쓸 대 줄바꿈은 어떻게 처리할지를 나타냄, 텍스트 모드에서만 사용
(None, '',\n, \r, \r\n e) <- 다섯가지 중 하나를 입력할 수도 있다
- 텍스트 파일 읽기/쓰기 : 텍스트 파일을 읽고 쓰는데 도움을 주는 파일 객체의 몇 가지 메소드 소개
○ 문자열을 담은 리스트를 파일에 쓰는 writelines() 메소드 : 리스트에 담아 사용중인 여러 줄의 문자열을 파일에 저장할 떄, writelines()는 문자열을 요소로 가지는 순서열 객체를 매개변수로 입력받아 해당 순서열
객체의 내용을 모두 파일에 기록함.
○ 줄 단위로 텍스트를 읽는 readline()과 readlines() 메소드 :
가장 많이 사용하는 메소드 두 가지 임.
readline() : 파일로부터 텍스트를 한 줄씩만 읽어옴. 이때 '한 줄'의 기준은 개행 문자가 됨.
readlines() : 파일의 모든 텍스트를 읽어들여 개행 문자 기준으로 요소를 삼는 리스트를 만들어 반환함.
cf) 파이썬3에서 제공하는 텍스트 인코딩
- 바이너리 파일 다루기 : 바이너리 파일은 메모리에 저장되어 있는 내용을 그대로 저장하고자 할 때 유용.
○ 파이썬에서 struct 모듈의 도움이 없이는 바이너리 파일을 제대로 다루기가 어려움.
○ pack() 함수(=일반 데이터를 byteㄴ 형식으로 변환하는 기능)와 unpack()함수(bytes 형식을 튜플 형식으로 변환하는 기능)
struct.pack(fmt, v1, v2, ...) # 데이터 -> bytes
structc.unpack(fmt, buffer) # bytes -> 튜플(데이터)
'스마트웹앱콘텐츠전문가 > 파이썬(플라스크, 데이터 처리)' 카테고리의 다른 글
[네트워크 프로그래밍] (0) | 2018.01.24 |
---|---|
[트위터 활용] (0) | 2018.01.24 |
[예외처리] (0) | 2018.01.23 |
[모듈,패키지 및 클래스] (0) | 2018.01.23 |
[흐름제어]분기문,반복문,제어문... (0) | 2018.01.22 |