๐ ์์ธ / ํ์ผ / ๋ก๊ทธ ๋ค๋ฃจ๊ธฐ(Exception / File / Log Handling)
๐ฅ ์์ธ(Exception)
- ์์ ๊ฐ๋ฅํ ์์ธ์ ์์์ด ๋ถ๊ฐ๋ฅํ ์์ธ๊ฐ ์กด์ฌ
- ์์ ๊ฐ๋ฅํ ์์ธ: ์ฌ์ ์ ์ธ์งํ ์ ์๋ ์์ธ๋ก ์๋ชป๋ ์ ๋ ฅ์ด๋ ํธ์ถ์ ํ ๋ ์ผ์ด๋๊ณ ๋ช ์์ ์ผ๋ก ์ฒ๋ฆฌํด ์ค(if ๋ฌธ)
- ์์ ๋ถ๊ฐ๋ฅํ ์์ธ: ์ธํฐํ๋ฆฌํฐ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์์ธ(ex. ๋ฆฌ์คํธ ๋ฒ์๋ฅผ ๋์ด๊ฐ๋ ๊ฐ ํธ์ถ, 0 ๋๋ ๋ฑ)
- ์์ ๊ฐ์ด ์์ธ์ ๋ํ Handling์ด ํ์ํ๋ฐ ์ด๋ด ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๊ฒ์ด Try ~ except ๊ตฌ๋ฌธ์ด๋ค.
- Try ~ except
Try - ์์ธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ฝ๋
Except - ์์ธ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ ๋์ํ๋ ์ฝ๋
Else - ์์ธ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒฝ์ฐ ์คํ๋๋ ์ฝ๋
Finally - ๋ง์ง๋ง์ ์คํ๋ ์ฝ๋
*Raise - ํ์์ ๋ฐ๋ผ ์์ธ๋ฅผ ๊ฐ์ ๋ก ๋ฐ์์ํด
-> if ๋ฌธ๊ณผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์์
*Asser - ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์์ ๊ฒฝ์ฐ ์์ธ
-> ํจ์์ ๋ง๋ ํ๋ผ๋ฏธํฐ ๋ฐ๊ธฐ ์ํจ ๋ฑ
๐ฅ ํ์ผ(File)
Text File |
Binary File |
๋ฌธ์์ด ํ์(์ฌ๋์ด ์ดํด) |
2์ง๋ฒ ํ์(์ปดํจํฐ๊ฐ ์ดํด) |
๋ฉ๋ชจ์ฅ์ผ๋ก ํ์ธ ๊ฐ๋ฅ |
๋ฉ๋ชจ์ฅ์์ ๊นจ์ง(ํธํ ํ์ผ ํ์) |
- ํ์ผ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด open ํค์๋๋ฅผ ์ฌ์ฉํด์ผ ํจ.
๋ณ์์ open์ผ๋ก ๋ฐ์์ฃผ๊ณ closeํด์ฃผ์ด์ผ ํจ
with ๊ตฌ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก close๊ฐ ๋จ
- ํ์ผ ์ด๊ธฐ ๋ชจ๋๋ ์๋์ ๊ฐ๋ค.
- 'r' - read(): ํ์ผ์ ํต์ฒด๋ก ์ฝ์ / readlines() - ํ ์ค์ฉ ๊ฐ์ง๊ณ ์ด / readline() - ์คํ์ ๋ง๋ค ํ ์ค์ฉ ๊ฐ์ง๊ณ ์ด
- 'w' - write() - ํ์ผ์ ์์ฑํ ์ ์์(๊ธฐ์กด์ ์์ผ๋ฉด ์ง์์ง)
- 'a' - write() - append()์ ๋์ผํ ๊ธฐ๋ฅ(๋ค์ ์ถ๊ฐ)
- os ๋ชจ๋: mkdir() - ํด๋ ์์ฑ / exists() - ํด๋๊ฐ ์๋ค๋ฉด True
- shutil ๋ชจ๋: copy()ํ์ผ ๋ณต์ฌ
- pathlib ๋ชจ๋: path๋ฅผ ๊ฐ์ฒด๋ก ๋ค๋ฃธ. cwd() - ํ์ฌ ์์น(Current Working Directory)
๐ Pickle
-> ํ์ด์ฌ์ ๊ฐ์ฒด๋ฅผ ์์ํ(persistence) ํ๋ built-in ๊ฐ์ฒด๋ก, ๋ฐ์ดํฐ, object ๋ฑ ์คํ ์ค ์ ๋ณด๋ฅผ ์ ์ฅํด ๋์ค์ ๋ถ๋ฌ์ ์ฌ์ฉํ ์ ์๋ค. ์ ์ฅํด์ผ ํ๋ ์ ๋ณด, ๊ณ์ฐ ๊ฒฐ๊ณผ(๋ชจ๋ธ) ๋ฑ์ ์ฌ์ฉ ๋๋ค.
๐ฅ ๋ก๊ทธ(Log)
- ๊ฒ์์ hack์ ์ฌ์ฉํ๋ ์ฌ๋๋ค ๋๋ฌธ์ ๊ณจ์น๊ฐ ์ํ ๋ ์ด๋ป๊ฒ ์ก์๋ผ ์ ์์๊น? ๋ฐ๋ก log๋ฅผ ๋จ๊ธฐ๋ ๊ฒ๋ถํฐ ์์ํ ์ ์๋ค. ๋ก๊ทธ๋ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ์ ๋ณด(์ ์ ์ ์ ๊ทผ, exception, ํน์ ํจ์ ์ฌ์ฉ)์ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋์ ์ ๋ณด๋ฅผ Consol ์ถ๋ ฅ ํ๋ฉด, ํ์ผ, DB์ ์ ์ฅํ๋ ๊ฒ์ ๋งํ๋ค. ์ด๋ฌํ ์ ๋ณด๋ฅผ ๋ถ์ํด ์๋ฏธ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํด ๋ด๋ ๊ฒ์ด ๋ชฉํ์ด๋ค.(consol ์ถ๋ ฅ ํ๋ฉด์ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ ๊ฒ์ ๋ถ์ ํ ๋์ ๋จ์ง ์์ ์ฌ์ฉ์ด ์ด๋ ค์)
- import logging ์ผ๋ก debug, info, warning, error, critical ๋ฑ์ ํจ์๋ฅผ ์ฌ์ฉํด ์ํ๋์ ๋ฐ๋ผ ๊ธฐ๋กํ ์ ์๋ค.
- ๋ก๊ทธ๋ฅผ ์ค์ ํด ์ฃผ๊ธฐ์ํด configparser(ํ๋ก๊ทธ๋จ ์คํ ์ค์ ์ file์ ์ ์ฅ)์ด๋ argparser(consol์ฐฝ์ setting ์ ๋ณด ์ถ๋ ฅ)์ ์ฌ์ฉํ๋ค.
๐ ํ์ด์ฌ ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ(Python Data Handling)
๐ฅ CSV(Comma Separate Value, ์ผํ(,)๋ก ๊ตฌ๋ถํ ํ ์คํธ ํ์ผ)
- ์์ ์์์ data๋ฅผ ์์ฝ๊ฒ ๊ณต์ ํ๊ธฐ ์ํด ์ฌ์ฉ(ํ๋ก๊ทธ๋จ์ ์๊ด์์ด ์ฌ์ฉ ๊ฐ๋ฅ)
- ๋ฉ๋ชจ์ฅ์ผ๋ก ์ด๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก test file์ ์ฒ๋ฆฌํ๋ฏ ์ฝ์ด์จ ํ ํ ์ค์ฉ ์ฒ๋ฆฌํ๋ฉด ๋จ.
- ๋ฌธ์ ์ : ๋ฌธ์ฅ ์์ฒด์ ์ผํ ์กด์ฌ์, ํ๊ธ์ ์ฒ๋ฆฌํด์ผ ํจ.
- import csv: csvํ์ผ ๋ฟ ์๋๋ผ tsv๋ฑ์ ํ์ผ๋ ์ฒ๋ฆฌํ ์ ์๋ ๋ชจ๋
๐ฅ WEB(World Wide Web, ์ธํฐ๋ท ๊ณต๊ฐ์ ์ ์ ๋ช ์นญ)
- HTTP๋ผ๋ ํ๋กํ ์ฝ(์ก, ์์ ์ ์ํจ)๊ณผ HTML(ํ์)๋ฅผ ์ฌ์ฉํจ
- ์์ฒญ -> ์ฒ๋ฆฌ -> ์๋ต -> ๋ ๋๋ง์ ํตํด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค
- HTML: ์น ์ ์ ๋ณด๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ํํ(Tag ์ฌ์ฉ, Markup Language๋ผ๊ณ ํจ), ๊ท์น์ ํ์ ํด ๋ถ์ ๊ฐ๋ฅ
๐ฅ ์ ๊ท์(Regular expression, ์ ๊ท ํํ์, regexp, regex๋ผ ๋ถ๋ฆผ)
- ๋ณต์กํ ๋ฌธ์์ด ํจํด์ ์ ์ํ๋ ๋ฌธ์ ํํ ๊ณต์
- ํน์ ํ ๊ท์น์ ๊ฐ์ง ๋ฌธ์์ด์ ์งํฉ์ ์ถ์ถ
-> 010-0000-0000 -> ^\d{3}\-\d{4}\-\d{4}$
123.123.123.123 -> ^\d{1, 3}\.\d{1, 3}\.\d{1, 3}\.\d{1, 3}$
- ์ฃผ๋ฏผ๋ฑ๋ก ๋ฒํธ, ์ ํ๋ฒํธ, ๋์ ISBN๋ฑ ํ์์ด ์๋ ๋ฌธ์์ด์ ์ถ์ถ
- tag๋ฅผ ์ฌ์ฉํ ํ์์ ์ ๊ท์์ ์ด์ฉํด ์ถ์ถํ ์ ์๋ค.
- ์๋ ์ฌ์ดํธ๋ฅผ ํ์ฉํ์ฌ ์ ๊ท์์ ์ฐ์ตํ ์ ์๋ค.
RegExr: Learn, Build, & Test RegEx
RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).
regexr.com
- ๋ฌธ์ํด๋์ค '[]' ์ฌ์ด์ ๋ฌธ์๋ค๊ณผ ๋งค์น ex. [a-z], [0-9], [abc] ๋ฑ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋ฉํ๋ฌธ์: ์ ๊ท์ ํํ์ ์ํด ์๋ ์๋ฏธ๊ฐ ์๋ ๋ค๋ฅธ ์ฉ๋๋ก ์ฌ์ฉ๋๋ ๋ฌธ์
- re๋ชจ๋: search() ํ๊ฐ๋ง ์ฐพ๊ธฐ, findall() - ์ ์ฒด ์ฐพ๊ธฐ => tuple๋ก ๋ฐํํจ.
๐ฅ XML(eXtensible Markup Language)
- Data์ ๊ตฌ์กฐ์ ์๋ฏธ๋ฅผ ์ค๋ช ํ๋ tag๋ฅผ ์ฌ์ฉํ๋ ์ธ์ด, Tree๊ตฌ์กฐ๋ฅผ ๊ฐ์ง
- HTML๊ณผ ๋ฌธ๋ฒ์ด ๋น์ท -> ์ ๊ท ํํ์์ผ๋ก parsing์ด ๊ฐ๋ฅํจ
๐ Beautiful Soup ๋ชจ๋
-> HTML, XML ๋ฑ Markup ์ธ์ด scraping์ ์ํ ๋ํ์ ์ธ ๋๊ตฌ๋ก ์๋(xml ๋ฑ์ ๋ชจ๋์ ๋นํด)๋ ์๋์ ์ผ๋ก ๋๋ฆฌ๋ ๊ฐํธํ ์ฌ์ฉํ ์ ์๋ค.
-> ์ฌ์ฉํ๊ธฐ ์ํด์๋ lxml๊ณผ beautifulsoup๋ฅผ ์ค์นํด์ผ ์ฌ์ฉํ ์ ์์.
-> find_all - ์ ๊ท์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํด๋น ํจํด์ ๋ชจ๋ ๋ฐํ
-> get_text() - ๋ฐํ๋ ํจํด์ ๊ฐ ๋ฐํ(tag์ tag ์ฌ์ด)
๐ฅ JSON(JavaScript Object Notation, javascript์ ๋ฐ์ดํฐ ๊ฐ์ฒด ํํ ๋ฐฉ์)
- ๊ฐ๊ฒฐ์ฑ์ผ๋ก ๊ธฐ๊ณ/์ธ๊ฐ ๋ชจ๋ ์ดํด๊ฐ ์ฌ์
- key:value ์์ผ๋ก ๋ฐ์ดํฐ ํ์ -> dictionary type๋ก ํธํ๊ฐ๋ฅ
- ํ์ด์ค๋ถ, ํธ์ํฐ, github ๋ฑ ๊ฑฐ์ ๋ชจ๋ ์ฌ์ดํธ๊ฐ ์ฌ์ฉ
- read: ๊ตฌ์กฐํ์ธ -> ์ฝ์ด์ค๊ธฐ -> dictionary type๋ก ์ฒ๋ฆฌ ==> roads ์ฌ์ฉ
- write: dictionary type๋ก ๋ฐ์ดํฐ ์ ์ฅ -> json๋ชจ๋๋ก write ==> dump ์ฌ์ฉ
'์ธ๊ณต์ง๋ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Day 6] Math for AI - 2. Vector and Matrix (0) | 2021.01.25 |
---|---|
[Day 6] Math for AI - 1. numpy (0) | 2021.01.25 |
[Day 4] Python (0) | 2021.01.21 |
[Day 3] Python (0) | 2021.01.20 |
[Day 2] Python (0) | 2021.01.19 |