14장 파일

Similar documents
14장 파일

17장 클래스와 메소드

8장 문자열

3장 함수

기술통계

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

확률 및 분포

10장 리스트

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

문서의 제목 나눔고딕B, 54pt

tkinter를 이용한 계산기 구현

Java

설계란 무엇인가?

12-file.key

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx


단순 베이즈 분류기

세계 비지니스 정보

[96_RE11]LMOs(......).HWP

PowerPoint Presentation

2 ㆍ 大 韓 政 治 學 會 報 ( 第 20輯 1 號 ) 도에서는 고려 말에 주자학을 받아들인 사대부들을 중심으로 보급되기 시작하였고, 이후 조선시대에 들어와서는 국가적인 정책을 통해 민간에까지 보급되면서 주자 성리학의 심 화에 커다란 역할을 담당하였다. 1) 조선시대


슬라이드 1

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint 웹 연동 기술.pptx

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

C++ Programming

쉽게 풀어쓴 C 프로그래밍

데이터 시각화

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

제1장 Unix란 무엇인가?

12 장파일입출력 파일입출력의기초파일열기, 사용하기, 닫기파일입출력모드문자단위파일입출력텍스트파일과이진파일 read, write 함수에의한이진파일입출력임의접근입출력스트림상태입출력연산자오버로딩과파일입출력 C++ 프로그래밍입문

BMP 파일 처리

Microsoft PowerPoint APUE(Intro).ppt

Secure Programming Lecture1 : Introduction

Microsoft PowerPoint - C++ 5 .pptx

슬라이드 1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Modern Javascript

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>


untitled

COVER.HWP

이슈분석 2000 Vol.1

가볍게읽는-내지-1-2

한눈에-아세안 내지-1

kbs_thesis.hwp


*통신1802_01-도비라및목차1~11

PowerPoint 프레젠테이션

02장.배열과 클래스

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

PowerPoint 프레젠테이션

Week5

Tcl의 문법

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

Microsoft PowerPoint - chap-02.pptx

MySQL-.. 1

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

PowerPoint 프레젠테이션

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - comp_prac_081223_2.pptx

UI TASK & KEY EVENT

chap x: G입력

쉽게 풀어쓴 C 프로그래밍

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

Microsoft PowerPoint - chap12.ppt [호환 모드]

금오공대 컴퓨터공학전공 강의자료

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - 05장(함수) [호환 모드]

JVM 메모리구조

PowerPoint Presentation

Index Process Specification Data Dictionary

PowerPoint 프레젠테이션

PowerPoint Presentation

경제통상 내지.PS

°æÁ¦Åë»ó³»Áö.PDF

금오공대 컴퓨터공학전공 강의자료

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

chap7.key

쉽게

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint 프레젠테이션

Transcription:

14 장파일 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 14 장파일 1 / 18

학습내용 파일입출력예포멧연산자 (format operator) 파일명과경로예외처리하기피클링 (pickling) 파일입출력디버깅 박창이 ( 서울시립대학교통계학과 ) 14 장파일 2 / 18

파일입출력예 >>> fout = open( output.txt, w ) >>> print(fout) <_io.textiowrapper name= output.txt mode= w encoding= cp949 > >>> line1 = "This here s the wattle,\n" >>> fout.write(line1) 24 >>> line2 = "the emblem of our land.\n" >>> fout.write(line2) 24 >>> fout.close() 박창이 ( 서울시립대학교통계학과 ) 14 장파일 3 / 18

포맷연산자 I write 의인자는문자열임 x = 52 fout.write(str(x)) 문자열로변환하는대신포맷연산자 % 를사용 >>> camels = 42 >>> %d % camels 42 >>> I have spotted %d camels. % camels I have spotted 42 camels. %d: 정수, %g: 실수, %s: 문자열 >>> In %d years I have spotted %g %s. % (3, 0.1, camels ) In 3 years I have spotted 0.1 camels. 박창이 ( 서울시립대학교통계학과 ) 14 장파일 4 / 18

포맷연산자 II 타입과갯수가맞아야함 >>> %d %d %d % (1,2) Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> %d %d %d % (1,2) TypeError: not enough arguments for format string >>> %d % dollars Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> %d % dollars TypeError: %d format: a number is required, not str 박창이 ( 서울시립대학교통계학과 ) 14 장파일 5 / 18

파일명과경로 I os.getcwd 함수는현재디렉토리명을반환함 >>> import os >>> cwd = os.getcwd() >>> print(cwd) C:\Users\Changyi\AppData\Local\Programs\Python\Python36 상대경로 (relative path) 는현재디렉토리로부터출발하며절대경로 (absolute path) 는루트디렉토리에서출발함. 파일의절대경로를찾기위해서 os.path.abspath 함수를이용할수있음 박창이 ( 서울시립대학교통계학과 ) 14 장파일 6 / 18

파일명과경로 II 여러가지함수들 >>> os.path.exists( output.txt ) True >>> os.path.isdir( output.txt ) False >>> os.listdir(cwd) [ DLLs, Doc, include, Lib, libs, LICENSE.txt, NEWS.txt, output.txt, python.exe, python3.dll, python36.dll, pythonw.exe, Scripts, tcl, Tools, vcruntime140.dll ] 박창이 ( 서울시립대학교통계학과 ) 14 장파일 7 / 18

파일명과경로 III 디렉토리의모든파일명을프린트함 ( 모든디렉토리에재귀호출 ) def walk(dirname): for name in os.listdir(dirname): path = os.path.join(dirname, name) if os.path.isfile(path): print(path) else: walk(path) 박창이 ( 서울시립대학교통계학과 ) 14 장파일 8 / 18

예외처리하기 try 는문제가발생한경우 except 실행하고아니면그대로실행됨 try: fin = fopen( bad_file ) for line in fin: print(line) fin.close() except: print( Something went wrong. ) 박창이 ( 서울시립대학교통계학과 ) 14 장파일 9 / 18

피클링 I pickle 모듈은임의의객체를데이터베이스에저장하기적합한문자열로변환및역변환을함 pickle.dumps 는객체를문자열로변환하는데읽을수있는형태는아님 >>> import pickle >>> t = [1, 2, 3] >>> s = pickle.dumps(t) >>> print(s) b \x80\x03]q\x00(k\x01k\x02k\x03e. 박창이 ( 서울시립대학교통계학과 ) 14 장파일 10 / 18

피클링 II pickle.loads 는객체를재구성하는데값은기존과동일하지만객체자체는다름 >>> t2 = pickle.loads(s) >>> print(t2) [1, 2, 3] >>> t == t2 True >>> t is t2 False 박창이 ( 서울시립대학교통계학과 ) 14 장파일 11 / 18

파일입출력 I 텍스트파일입출력 file_for_reading = open( filename.txt, r ) file_for_writing = open( filename.txt, w ) file_for_appending = open( filename.txt, a ) file_for_writing.close() with: 작업이끝나면파일을자동적으로닫음 with open( filename.txt, r ) as f: data = function_that_gets_data_from(f) # don t use f from now on process(data) 박창이 ( 서울시립대학교통계학과 ) 14 장파일 12 / 18

파일입출력 II 텍스트파일전체를반복적으로읽기 starts_with_hash = 0 with open( input.txt, r ) as f: for line in f: if re.match("^#", line) # check if a line starts with # starts_with_hash += 1 각줄마다이메일주소가하나씩있는파일을사용하여메일도메인에대한히스토그램그리기 def get_domain(email_address): """ @ 기준으로주소를자르고마지막부분을반환 """ return email_address.lower().split("@")[-1] with open( email_addresses.txt, r ) as f: domain_counts = Counter(get_domain(line.strip()) for line in f if "@" in line) 박창이 ( 서울시립대학교통계학과 ) 14 장파일 13 / 18

파일입출력 III 구분자가있는파일탭으로분리된파일 >>> import csv >>> def process(date, symbol, price): print(date, symbol, price) >>> with open( D:/Dropbox/ 데이터백업 /Lecture/2018 년 1 학기고급통계프로그래밍 / 코드 /tab_delimited_stock_prices.txt, r, encoding= utf8, newline= ) as f: reader = csv.reader(f, delimiter= \t ) # reader = csv.reader(codecs.iterdecode(f, utf-8 ), delimiter for row in reader: date = row[0] symbol = row[1] closing_price = float(row[2]) process(date, symbol, closing_price) 박창이 ( 서울시립대학교통계학과 ) 14 장파일 14 / 18

파일입출력 IV 6/20/2014 AAPL 90.91 6/20/2014 MSFT 41.68 6/20/2014 FB 64.5 6/19/2014 AAPL 91.86 6/19/2014 MSFT 41.51 6/19/2014 FB 64.34 박창이 ( 서울시립대학교통계학과 ) 14 장파일 15 / 18

파일입출력 V 콜론으로분리된파일 >>> with open( D:/Dropbox/ 데이터백업 /Lecture/2018 년 1 학기고급통계프로그래밍 / 코드 /colon_delimited_stock_prices.txt, r, encoding= utf8,newline= ) as f: reader = csv.dictreader(f, delimiter= : ) # reader = csv.dictreader(codecs.iterdecode(f, utf-8 ), delim for row in reader: date = row["date"] symbol = row["symbol"] closing_price = float(row["closing_price"]) process(date, symbol, closing_price) 6/20/2014 AAPL 90.91 6/20/2014 MSFT 41.68 6/20/2014 FB 64.5 박창이 ( 서울시립대학교통계학과 ) 14 장파일 16 / 18

파일입출력 VI csv.writer 를이용하여구분자있는파일생성 >>> today_prices = { AAPL : 90.91, MSFT : 41.68, FB : 64.5 } >>> with open( D:/Dropbox/ 데이터백업 /Lecture/2018 년 1 학기고급통계프로그래밍 / 코드 /comma_delimited_stock_prices.txt, w, encoding= ut writer = csv.writer(f, delimiter=, ) for stock, price in today_prices.items(): writer.writerow([stock, price]) 12 12 9 박창이 ( 서울시립대학교통계학과 ) 14 장파일 17 / 18

디버깅 파일입출력시공백, 탭, 줄바꾸기등은눈으로볼수없는데 rexpr 을이용하면백슬래시기호로표현하여시각적으로볼수있어디버깅에도움이됨 >>> s = 1 2\t 3\n 4 >>> print(s) 1 2 3 4 >>> print(repr(s)) 1 2\t 3\n 4 시스템에따라가령줄바꿈문자가 \r 혹은 \n 일수있음 박창이 ( 서울시립대학교통계학과 ) 14 장파일 18 / 18