빠르게 활용하는 파이썬3 프로그래밍 Chapter 8. 입출력 안녕하세요, 파이썬의 세계에 오신 것을 환영합니다.

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

2 장 자료형 및 연산자 - 김욱동 -. 목 차목 차  변수  자료형  유니코드  리스트  튜플  세트  사전  부울  얕은 / 깊은 복사.
Python RaspberryPi Sejin Oh. Raspberry Pi Python  참과 거짓  Python 자료형의 참과 거짓을 구분 짓는 기준은 다음과 같다. 2 참과 거짓 자료형참 or 거짓 “” 가 아닌 문자열 ( 예 : “python”) 참 “” 거짓.
Python RaspberryPi Sejin Oh. Raspberry Pi Python  파이썬이란 무엇인가 ?  파이썬이란 1990 년 암스테르담의 귀도 반 로섬에 의해 만들어진 인 터프리터 언어이다.  파이썬은 사람이 생각하는 방식을 그대로 표현할 수 있도록.
0 4 조 천호 뉴타운 답사. 1 INDEX 천호동의 지역 개요 및 입지여건 뉴타운 상업현황 및 투자분석 인근 기존 APT 의 최근 몇년간 가격추이 단독, 빌라, 다세대 등의 가격 동향 인근 APT 가격 동향 1, 2, 3 억 여유자금으로 실제 투자물건 제안.
내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
© DBLAB, SNU 화일구조. 강의 소개 - 화일구조  Instructor : Prof. Sukho Lee (301 동 404 호 )  홈페이지 :  교과목 개요 – 이 과목은 데이타 관리와 응용을 위한 화일 구조의 설계와.
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여
키보드 보안 순천향대학교 정보보호학과 임강빈 교수.
화일구조.
VISUAL BASIC 양 계 탁.
[ 단원 12 ] 파일처리 부산대학교 남 태 우.
Deep Learning in Udacity
사용자 메뉴얼 차량용 4CH 블랙박스 매뉴얼 버전 : Version 2.1 Hardware Version : 2.0
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
두근두근 파이썬 수업 9장 리스트와 딕셔너리.
고교평준화의 득과 실 김영주 이지영 최윤영.
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
사용자 메뉴얼 차량용 4CH 블랙박스 매뉴얼 버전 : Version 1.1 Hardware Version : 1.0
-Part3- 제3장 콘솔 입출력과 파일 입출력.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
2007. Database Term Project Team 2 윤형석, 김희용, 최현대 우경남, 이상제
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
특수조명 Program Manual M.D.I Solution
쉽게 배우는 알고리즘 5장. 검색트리.
파일 및 디렉토리(1) 여러 함수들 chdir(“category”) || die “cannot cd to temp”;
Y. Daniel Liang 길준민 · 정재화.
DataScience Lab. 박사과정 김희찬 (월)
Chapter 14 이진 데이터 파일과 임의 접근 데이터 파일 C 이진 데이터 파일 임의 접근 파일.
컴퓨터 활용 및 실습 Chapter 3 수식과 함수 김 정 석
발로 하는 파이썬 세미나 안녕하세요. 저는 발로 하는 파이썬 세미나를 발표할….
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
-제어문, 함수, 클래스- IS lab. 김건영 Python -제어문, 함수, 클래스- IS lab. 김건영
17강 파일처리함수(1) 강 의 내 용 파일 입출력의 개념 파일포인터를 이용한 입출력 파일 입출력 과정
6장 데이터 타입(2) 순천향대학교 컴퓨터공학부 하 상 호.
목차 INDEX 1. 회원가입 및 로그인 2. 업체정보 3. 제조검사 신청 4. 인보이스 5. 검사진행현황(현장검사 신청)
문자열, 딕셔너리, 세트.
D:\win_9X\setup.exe 또는 D:\win_XP\setup.exe 을 클릭하여 설치합니다.
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
아두이노 프로그래밍 1일차 – Part4 값출력 및 디지털 읽기 강사: 김영준 목원대학교 겸임교수
국제의료관광 관련 법, 제도.
6장 데이터 타입(3) 순천향대학교 컴퓨터공학부 하 상 호.
두근두근 파이썬 수업 11장 파일을 사용해봅시다..
컬럼 대칭키 암호화 작업(SQL 2008) ① 마스터 키 생성 ② 인증서 생성 초기 한번만 실행 ③ 대칭키 생성
CACM 구현 public class CACM { public CACM(File file)
아카데미나이스 RFID설치 방법 아카데미나이스 RFID설치 방법
U N I X 창원대학교 전자계산학과 김병찬.
작성일 참고서적 – Programing Game AI by Example
Files and Exceptions Byoungjun Kim
파일 입출력.
nauten Compiler – Report Ver.3 Mini-C (주간)
화일구조.
Homework #7 (1/4) 다음 프로그램을 작성하고, 프로그램과 실행 결과를 함께 제출한다.
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
Welcome to Wee Class 곤지암고등학교 전문상담교사 김진희.
-자료형과 연산- IS lab. 김건영 Python -자료형과 연산- IS lab. 김건영
2015년 2학년 1반.
천국 가는 길 천국 가는 길 ♧ 천국 가는 길 ♧ 1. 죄와 사망(지옥) 1) 사람의 3가지 공통점 - 죄인, 죽음, 심판
대림대학교 2017년도 1학기 강의 왕보현 순서도와 스크래치 6주차 대림대학교 2017년도 1학기 강의 왕보현
▶서류관리 프로그램 1. 로그인….2 2. 서류등록 … 서류도착 서류스티커발행
Python Tutorial 4: Data Structures
DataScience Lab. 박사과정 김희찬 (화)
유예 X-FILE *조사자* 1301권희원 1315이예지 1317장아정 1322홍자현.
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
책을 읽읍시다  탈향 진지하게 설명해드림 1303 김소희 1309박지호 1315이지수.
2016년 제1차 운영위원회 평택시건강가정 ∙다문화가족지원센터
컴퓨터 프로그래밍 및 실습 – 5주차 내장함수 / 외장함수 (1)
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

빠르게 활용하는 파이썬3 프로그래밍 Chapter 8. 입출력 안녕하세요, 파이썬의 세계에 오신 것을 환영합니다. 이번 시간에는 파이썬3의 입출력에 대해서 알아보겠습니다.

출력 화면으로 출력할 때는 print() 함수를 사용합니다. 파이썬 버전 2.x 때는 print가 함수가 아니었지만, 3.0 에서는 함수로 바뀌었습니다. 즉, 다음과 같이 함수처럼 괄호 안에 출력할 인자를 적으면 됩니다. >>> print(1) 1 >>> print('hi, guyz') hi, guyz Print 함수의 입력인자로 다음과 같이 구분자(sep), 끝라인(end), 출력(file)을 지정해 줄 수 있습니다. 아래 예제와 같이 file을 이용해서 출력을 표준오류(standard error)로 변경하거나 파일로 바꿀 수도 있습니다. >>> print("welcome to","python", sep="~", end="!", file=sys.stderr)   welcome to~python!

포맷팅(formatting) Print만 가지고는 출력이 좀 불편하다고 느끼실 것입니다. 그러나 format() 메소드을 사용하면 문자열을 그 이상으로 자유롭게 다룰 수가 있습니다. 문자열 내에서 어떤 값이 들어가길 원하는 곳은 {}로 표시를 합니다. {} 안의 값들은 숫자로 표현할 수 있으며, format 인자들의 인덱스를 사용합니다. 아래 예제를 보면, {0}는 첫 번째 인자인 "apple"을 나타내고 {1}은 두 번째 인자인 "red"를 나타냅니다. >>> print("{0} is {1}".format("apple", "red")) apple is red

포맷팅(formatting) {} 안의 값을 지정할 때는 다음과 같이 format의 인자로 키(key)와 값(value)을 주어 위와 동일한 결과를 얻을 수 있습니다. >>> print("{item} is {color}".format(item="apple", color="red")) apple is red 이번에는 dictionary를 입력으로 받는 경우를 살펴보도록 하겠습니다. >>> dic = {"item":"apple", "color":"red"} >>> print("{0[item]} is {0[color]}".format(dic)) apple is red

포맷팅(formatting) 앞에서 {0[item]}의 0[]을 달고 다니느라 매우 불편하셨을 텐데요, ** 기호를 사용하면 dictionary를 입력으로 받은 것으로 판단하고 인자를 하나만 받게 됩니다. 그러므로 아래와 같이 불필요한 index는 생략할 수 있습니다. >>> print("{item} is {color}".format(**dic)) apple is red

포맷팅(formatting) ! 기호를 사용해서 문자열 변환을 사용할 수 있습니다. >>> print("{item!s} is {color!s}".format(**dic)) apple is red >>> print("{item!r} is {color!r}".format(**dic)) 'apple' is 'red' >>> print("{item!a} is {color!a}".format(**dic)) 'apple' is 'red' !s, !r, !a는 각각 str(), repr(), ascii() 를 실행한 결과와 동일하다고 보시면 됩니다.

포맷팅(formatting) 이번에는 “:” 기호를 이용하여 보다 정교하게 정렬, 폭, 부호, 공백처리, 소수점, 타입 등을 지정할 수 있는 법을 알아보겠습니다. >>> print("{0:$>5}".format(10)) $$$10 “{0"까지는 첫 번째 인자인 ‘10’을 표시하라는 뜻인 것을 알 수 있습니다. 그런데 ":" 이후의 기호들은 모두 처음 보는 것들이네요. 눈치가 빠르신 분들은 이미 파악하셨겠지만, "$"는 공백을 채우는 문자를 "$"로 채우라는 의미이며, ">"는 오른쪽 정렬을, "5"는 전체 자리수가 5자리라는 것을 나타냅니다.

포맷팅(formatting) 정렬에 사용되는 기호는 ">", "<", "^", "=" 이 있습니다. ">"는 오른쪽 기준, "<"는 왼쪽 기준, "^"는 가운데 기준을 나타냅니다. "="는 부호와 상관이 있는데, "="가 사용되면 공백문자들 앞에 부호가 표시됩니다. 사용되지 않으면 공백문자들 뒤, 즉, 숫자 바로 앞에 부호가 표시됩니다. 부호를 나타내는 기호는 "+", "-", " "이 있습니다. "+"는 플러스 부호를 나타내라는 뜻이며, "-"는 마이너스 값만 마이너스 부호를 나타내라는 것을 의미하며, " "는 마이너스 값에는 마이너스 부호를 나타내고 플러스일 때는 공백을 표시하라는 뜻입니다.

포맷팅(formatting) 진수를 바꿔서 출력할 수도 있습니다. "b"는 이진수를, "d"는 십진수를, "x"는 16진수를, "o"는 8진수를 나타내며 "c"는 문자열을 출력합니다. >>> print("{0:b}".format(10)) 1010 >>> print("{0:o}".format(10)) 12 >>> print("{0:c}".format(65)) 또한 "#"를 사용하면 #x는 16진수 #o는 8진수, #b는 2진수로 표시 됩니다. >>> print("{0:#x}, {0:#o}, {0:#b}".format(10)) 0xa, 0o12, 0b1010

포맷팅(formatting) 정수 이외에 실수에 대한 변환도 제공되며, "e"는 지수표현을, "f"는 일반적인 실수 표현을, "%"는 퍼센트 표현을 의미합니다. >>> print("{0:e}".format(4 / 3)) 1.333333e+00 >>> print("{0:f}".format(4 / 3)) 1.333333 >>> print("{0:%}".format(4 / 3)) 133.333333% 실수에서는 다음과 같이 소수점 몇 번째 자리까지 표현할 것인지를 지정할 수 있습니다. 아래 예제에서는 소수점 3번째 자리까지만 출력되는 것을 확인할 수 있습니다. >>> print("{0:.3f}".format(4 / 3)) 1.333

입력 사용자로부터 입력은 다음과 같이 input()함수를 이용해서 받을 수 있습니다. input의 입력인자로는 화면에 출력할 프롬프트(prompt)를 줄 수 있으며, 생략 가능하며, 결과값으로는 문자열 객체를 반환합니다. >>> a = input('insert any keys :') insert any keys : test  >>> print(a) test

파일 입출력 파일로의 입출력은 앞에서 본 바와 같이 print() 함수의 file 입력인자를 이용할 수도 있지만, 파일 입출력 제어를 보다 세밀하게 하기 위해서는 open() 함수를 통해서 파일을 연 후 파일 전용 함수들을 이용해서 작업하는 것이 일반적입니다. >>> f = open('test.txt', 'w') Open 함수의 마지막 인자는 파일을 열 때의 속성을 의미하며, 다음 속성들의 조합으로 사용이 가능합니다. r : 읽기 모드 ( 디폴트 ) w : 쓰기 모드 a : 쓰기 + 이어쓰기 모드 + : 읽기 + 쓰기 모드 b : 바이너리 모드 t : 텍스트 모드 (디폴트 )

파일 입출력 파일로부터 읽고 쓰기 위해서 파일로부터 모든 데이터를 읽는 read() 함수와 문자열을 쓰는 write() 함수가 제공됩니다. 또한 파일을 열고 할 일을 모두 완료했을 경우 파일객체를 닫아주는 close() 함수가 있습니다. >>> f = open('test.txt', 'w') >>> f.write('plow deep\nwhile sluggards sleep') 31 >>> f.close()

파일 입출력 이번에는 이 파일이 제대로 쓰였는지 읽어 보도록 하겠습니다. >>> f = open('test.txt') >>> f.read() 'plow deep\nwhile sluggards sleep' >>> f.close() >>> f.closed True 텍스트 모드에서는 일반 문자열과 같이 encoding이 적용되기 때문에, 바이너리 데이터(binary data)를 다룰 때에는 오류가 발생하게 됩니다. 그러므로 바이너리 데이터를 다룰 때에는 반드시 바이너리 모드를 사용해야 합니다.

파일 입출력 파일 입출력 관련 함수들 With ~ as 구문 readline() 함수는 호출할 때 마다 한 줄씩 읽은 문자열을 반환하며, readlines() 함수는 파일의 모든 내용을 줄 단위로 잘라서 리스트를 반환합니다. tell() 함수는 현재 파일에서 어디까지 읽고 썼는지 위치를 반환하며, seek() 함수는 사용자가 원하는 위치로 포인터를 이동합니다. With ~ as 구문 >>> with open('test.txt') as f: [TAB]print( f.readlines() ) [TAB]print( f.closed ) ['plow deep\n', 'while sluggards sleep'] False >>> f.closed True

Pickle 그런데 문자열의 경우에는 배운 방법을 사용하여 쉽게 다룰 수 있지만, 리스트나 클래스 등을 저장할 때는 어떻게 해야 할까요? 내용을 모두 분해해서 파일에 저장한 후, 다시 읽어 들일 때는 구분해서 다시 값을 설정해야 할까요? 파이썬에는 이러한 일들을 쉽게 할 수 있도록 도와주는 pickle이라는 모듈이 있습니다.

Pickle 다음과 같이 리스트가 있다고 가정합니다. >>> colors = ['red', 'green', 'black'] 아래와 같이 pickle모듈의 dump함수를 사용하면, colors를 다음과 같이 쉽게 파일에 저장할 수 있습니다. >>> import pickle >>> f = open('colors', 'wb') >>> pickle.dump(colors, f) >>> f.close()

Pickle 이번에는 파일로부터 다시 읽어보겠습니다. 우선 colors를 삭제한 후, load 함수를 이용해서 리스트를 읽어 들입니다. >>> del colors >>> f = open('colors', 'rb') >>> colors = pickle.load(f) >>> f.close() >>> colors ['red', 'green', 'black'] pickle로 파일에 쓰거나 읽을 때는 반드시 바이너리 모드로 파일을 열어야 합니다.

Pickle pickle로 저장할 수 있는 대상은 파이썬 객체라면 거의 모두 가능합니다. 기본 자료형은 물론이고 아래 예제와 같이 사용자가 정의한 클래스 객체도 pickle이 가능합니다. >>> class test: [TAB]var = None >>> a = test() >>> a.var = 'Test' >>> f = open('test', 'wb') >>> pickle.dump(a, f) >>> f.close() >>> f = open('test', 'rb') >>> b = pickle.load(f) >>> b.var 'Test'

수고하셨습니다.