14장 파일

Similar documents
14장 파일

17장 클래스와 메소드

8장 문자열

3장 함수

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

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

PowerPoint Presentation

Microsoft PowerPoint 웹 연동 기술.pptx

기술통계

슬라이드 1

확률 및 분포

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

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

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

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


10장 리스트

Java

12-file.key

데이터 시각화

쉽게 풀어쓴 C 프로그래밍

C 언어 프로그래밊 과제 풀이

쉽게 풀어쓴 C 프로그래밍

Tcl의 문법

BMP 파일 처리

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Java ...

슬라이드 1

설계란 무엇인가?

PowerPoint 프레젠테이션

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

歯9장.PDF

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

tkinter를 이용한 계산기 구현

Microsoft PowerPoint - Java7.pptx

chap7.key

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

단순 베이즈 분류기

JVM 메모리구조

Microsoft PowerPoint - chap12-고급기능.pptx

PowerPoint 프레젠테이션

Week5

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

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

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint APUE(Intro).ppt

제1장 Unix란 무엇인가?

PowerPoint Presentation

쉽게

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

02장.배열과 클래스

Secure Programming Lecture1 : Introduction

PowerPoint 프레젠테이션

Modern Javascript

C++ Programming

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

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

Microsoft PowerPoint - C++ 5 .pptx

4장.문장

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

Javascript.pages

PowerPoint 프레젠테이션


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

Microsoft PowerPoint - 02-Shell-Programming

MySQL-.. 1

세계 비지니스 정보

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

전기설비의 검사˚점검 및 시험등

02 C h a p t e r Java

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

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

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

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


쉽게 풀어쓴 C 프로그래밍

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

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

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

[ 정보 ] 과학고 R&E 결과보고서 Monte Carlo Method 를이용한 고교배정시뮬레이션 연구기간 : ~ 연구책임자 : 강대욱 ( 전남대전자컴퓨터공학부 ) 지도교사 : 최미경 ( 전남과학고정보 컴퓨터과 ) 참여학생 : 박진명 ( 전

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

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint 세션.ppt

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

UI TASK & KEY EVENT

Transcription:

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

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

파일입출력예 >>> 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 / 22

포맷연산자 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 / 22

포맷연산자 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 / 22

파일명과경로 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 / 22

파일명과경로 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 / 22

파일명과경로 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 / 22

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

예외처리하기 II 예제 : 2 차방정식 ax 2 + bx + c = 0 의계수 a, b, c 를입력으로받아서근이실수가아닌경우값오류발생 import math try: print("please enter (a,b,c) the coefficients of quadratic equation" A = int(input("a :")) B = int(input("b :")) C = int(input("c :")) Delta = B**2-4*A*C x1 = (-B-math.sqrt(Delta))/(2*A) x2 = (-B+math.sqrt(Delta))/(2*A) print("the roots are {} and {}".format(x1, x2)) except ValueError: print("a value error occurred") 박창이 ( 서울시립대학교통계학과 ) 14 장파일 10 / 22

유용한함수들 I readline 함수를이용하여한줄씩읽어서화면에출력 >>> f = open( example.txt, r ) >>> while True:... line = f.readline()... if not line: break... print(line)... >>> f.close() 박창이 ( 서울시립대학교통계학과 ) 14 장파일 11 / 22

유용한함수들 II readlines 함수로한꺼번에읽어서한줄씩화면에출력 >>> f = open( example.txt, r ) >>> lines = f.readlines() >>> for line in lines:... print(line)... >>> f.close() read 함수로한꺼번에읽어서화면에출력 >>> f = open( example.txt, r ) >>> lines = f.read() >>> print(lines) >>> f.close() 박창이 ( 서울시립대학교통계학과 ) 14 장파일 12 / 22

피클링 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 장파일 13 / 22

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

파일입출력 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 장파일 15 / 22

파일입출력 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 장파일 16 / 22

파일입출력 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 장파일 17 / 22

파일입출력 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 장파일 18 / 22

파일입출력 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 장파일 19 / 22

파일입출력 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 장파일 20 / 22

sys 모듈로매개변수주기 입출력 #sys1.py 파일 import sys args = sys.argv[1:] for i in argv: print(i) 명령프롬프트에서 python sys1.py aaa bbb ccc 를입력하면 aaa bbb ccc 출력됨 박창이 ( 서울시립대학교통계학과 ) 14 장파일 21 / 22

디버깅 파일입출력시공백, 탭, 줄바꾸기등은눈으로볼수없는데 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 장파일 22 / 22