Auspice by Goorm, Manage by DAVIAN @ KAIST

Lecture 12: IO

  • 표준 출력 (stdout) : 따로 Redirection 없으면 콘솔 출력.
    • print('sentence')
  • 표준 입력 (stdin) : 따로 Redirection 없으면 콘솔 입력.
    • var = input()
  • 파이썬은 File Descriptor를 열기 위하여 Open 내장 함수를 사용함.
접근 모드 설명
r 읽기 모드
rb 이진 읽기 모드
w 쓰기 모드
wb 이진 쓰기 모드
a 추가 모드

Read

  • read 메소드로 파일 읽기 가능. contents = file.read()
  • File descriptor 닫는 것을 깜빡할 때가 많음. -> Context manager 형태로 사용 with 문
  • 줄 단위로 잘라서 읽기. for문을 이용함.
  • 전체 읽은 후 줄단위로 잘라서 변환 -> file.readlines()

Write

  • write 메소드로 파일 쓰기 가능. file.write()
  • writelines 메소드로 여러 줄 작성. file.writelines()
  • 추가하기 모드 a 로 파일 뒤에 덧 붙이기 가능. with open('text.txt, 'a') as file:

Directory

  • os 라이브러리로 플랫폼 독립적인 폴더 생성 가능.
    • 파이썬에선 Windows, Unix 모두 ` / `로 폴더를 나타냄.
  • path 라이브러리로 경로 관련 연산 가능. os.path.isdir

  • os.listdir 함수로 폴더 내 파일/하위 폴더 검색 가능.

  • glob 라이브러리로 유닉스 스타일 경로명 패턴 확장 적용 가능.
    • print(*[entry for entry in glob.glob('test/*.txt')])

Pickle

  • 파이썬 객체를 그대로 저장하고 싶다면 -> Pickle 이용.
    • 장점: 쓰기 쉬움, 파이썬 객체를 그대로 저장.
    • 단점: 파이썬에서만 읽을 수 있음. 보안 문제가 있음.

CSV

  • CSV: Comma Separate Values
  • 표 데이터를 프로그램에 상관없이 쓰기 위한 데이터 형식
    • 필드를 쉼표(,)로 구분한 텍스트 파일.
  • import csv로 쉽게 읽기 쓰기 가능.

Reading CSV

import csv
with open('test.csv', 'r') as fd:
    reader = csv.reader(fd,
        delimiter=,, quotechar=‘“’,
        quoting = csv.QUOTE_MINIMAL
		)
    for entry in reader: 
        print(entry)

Writing CSV

import csv
with open('test.csv', 'w') as fd:
    writer = csv.writer(fd,
        delimiter=,, quotechar=‘“’,
        quoting = csv.QUOTE_MINIMAL)
    writer.writerow(['id', 'label’])
    writer.writerows([I, f'label_{i}'] 

JSON

  • JSON: JavaScript Object Notation
  • 웹 언어인 Javascript의 데이터 객체 표현 방식
    • 자료 구조 양식을 문자열로 표현.
    • 간결하게 표현되어 사람과 컴퓨터 모두 읽기 편함.
    • 최근 각광 받는 자료구조 형식
  • 그럼에도 parser 직접 작성은 매우 귀찮음.

  • JSON 라이브러리를 이용하여 읽기 쓰기 가능.

XML

  • XML: eXtensible Markup Language
  • 데이터 구조와 의미를 설명하는 태그를 활용한 언어.
  • HTML 파일을 읽어 웹 크롤러 제작 가능.

Lecture 13: Setting & Exception & Logging

Programming Seting

프로그램의 설정 값을 만들어 주고 싶다면?

  • 실행할 때마다 필요한 설정 값.
    • 딥러닝 사용 횟수 (Epoch), 학습 계수 (Learning rate)
    • 사용하는 GPU 개수 ==> Command Line Argument로 입력.
  • 한번 설정하면 수정을 잘 안하는 설정 값.
    • 학습 자료 폴더 위치
    • 웹 서버의 Listening Port ==> 설정 파일에서 불러들이기.
  1. argparser 라이브러리 활용.
    • 인자 flag를 설정 가능하여 flag 별 입력 가능 ( -l , –left )
    • 기본 값 설정가능.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-l', '--left', type=int)
Parser.add_argument('-r', '—right', type=int) 
Parser.add_argument('—operation’, dest='op,help="Set Operation",default='sum’) 
args = parser.parse_args()
print(args)
if args.op == 'sum: # 인자 접근 
    out = args.left + args.right
elif args.op == 'sub’:
    out = args.left - args.right
print(out)
# 기본 값
  1. Config File 사용.
    • 프로그램 실행 설정을 file에 저장함.
    • Section, Key, Value 값의 형태
    • 이중 dict 형태 -> 모든 key, value가 str

스크린샷 2022-01-07 오후 6 24 59

  1. configparser 사용.
    • configparser 라이브러리를 활용.
    • 파이썬 기본 dict 처럼 사용.
    • 기본적으로 모든건 str 타입으로 처리.

Exception Handling

  • 프로그램 실행 중에는 다양한 예외/에러가 발생.
  • 예외가 발생할 경우 대응 조치가 필요
    • 불러올 파일이 없는 경우 -> 파일이 없음을 사용자에게 알림.
    • 서버와 연결이 끊김 -> 다른 서버로 Rediredction
  • 예외가 발생할 수 있는 코드 -> (특정 예외 발생시) 대응 코드 -> 계속 진행.
try:
    <예외 발생 가능 코드>
except <예외 클래스>:
    <대응 코드>

Built-in Exceptions

  • 내장 예외: 기본 정의된 예외 클래스

스크린샷 2022-01-07 오후 6 28 59

  • 이 외에도 매우 많은 내장 예외 존재.

Exception Class

  • 파이썬 예외는 모두 BaseException 상속.
    • 대부분 try로 최대 Exception단 까지만 잡음.

스크린샷 2022-01-07 오후 6 30 42

Raising & Referencing Exceptions

  • Raise 구문으로 예외 발생.
    • raise <예외 객체="">
  • as 구문으로 잡힌 에러를 참조 가능.
    • except <예외 클래스=""> as <예외 객체="">
try:
    while True:
        value = input("A B C 중 하나를 입력하세요: ") 
        if len(value) == 1 and value not in "ABC":
            raise ValueError("잘못된 입력입니다. 종료합니다.") # 예외 발생
        print("선택된 옵션:", value)
except ValueError as e: # as 이하 구문으로 예외 객체 들고오기 가능 
        print(e)

Assertion

  • 조건을 확인하여 이 아닐 시 AssertError 발생.
    • assert <조건>
    • assert <조건>, <에러 메세지="">
  • 에러 메시지가 없을 경우 빈칸 처리

Logging

  • 프로그램이 일어나는 동안 발생했던 정보를 기록. => 결과 처리, 유저 접근, 예외 발생.. => 기록된 로그 분석을 통한 디버깅 & 유저 패턴 파악.
  • 기록 용도에 따른 차이: => 용도에 따라 출력 형식 및 필터링 필요.

Lecture 14: WEB

HTML

  • XML형태로 웹 페이지의 구조를 표현함.
    • Beautiful Soup 등 XML parser로 해석 가능.
  • 다운받은 HTML 파일을 웹 브라우저가 해석 & 화면 표시.

=> HW2 과제로 이어짐.

댓글남기기