goormNLP [Python Programming]
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 ==> 설정 파일에서 불러들이기.
- 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)
# 기본 값
- Config File 사용.
- 프로그램 실행 설정을 file에 저장함.
- Section, Key, Value 값의 형태
- 이중 dict 형태 -> 모든 key, value가 str
- configparser 사용.
- configparser 라이브러리를 활용.
- 파이썬 기본 dict 처럼 사용.
- 기본적으로 모든건 str 타입으로 처리.
Exception Handling
- 프로그램 실행 중에는 다양한 예외/에러가 발생.
- 예외가 발생할 경우 대응 조치가 필요
- 불러올 파일이 없는 경우 -> 파일이 없음을 사용자에게 알림.
- 서버와 연결이 끊김 -> 다른 서버로 Rediredction
- 예외가 발생할 수 있는 코드 -> (특정 예외 발생시) 대응 코드 -> 계속 진행.
try:
<예외 발생 가능 코드>
except <예외 클래스>:
<대응 코드>
Built-in Exceptions
- 내장 예외: 기본 정의된 예외 클래스
- 이 외에도 매우 많은 내장 예외 존재.
Exception Class
- 파이썬 예외는 모두 BaseException 상속.
- 대부분 try로 최대 Exception단 까지만 잡음.
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 과제로 이어짐.
댓글남기기