๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ธ๊ณต์ง€๋Šฅ

[Day 5] Python

๐Ÿ“ ์˜ˆ์™ธ / ํŒŒ์ผ / ๋กœ๊ทธ ๋‹ค๋ฃจ๊ธฐ(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.com/

 

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