Search
Duplicate

File / Exception / Log + Handling

์ƒ์„ฑ์ž
๋ถ„๋ฅ˜
ํŒŒ์ด์ฌ
์ƒ์„ฑ์ผ
2023/02/16 14:02

File Handling

๋””๋ ‰ํ† ๋ฆฌ (Directory)

โ€ข
ํด๋” ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋ถˆ๋ฆผ
โ€ข
ํŒŒ์ผ๊ณผ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ

ํŒŒ์ผ (File)

โ€ข
์ปดํ“จํ„ฐ์—์„œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„ (wikipedia)
โ€ข
ํŒŒ์ผ์€ ํŒŒ์ผ๋ช…๊ณผ ํ™•์žฅ์ž๋กœ ์‹๋ณ„๋จ (์˜ˆ: hello.py)
โ€ข
์‹คํ–‰, ์“ฐ๊ธฐ, ์ฝ๊ธฐ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ์Œ

ํŒŒ์ผ์˜ ์ข…๋ฅ˜

โ€ข
๊ธฐ๋ณธ์ ์ธ ํŒŒ์ผ ์ข…๋ฅ˜๋กœ text ํŒŒ์ผ๊ณผ binary ํŒŒ์ผ๋กœ ๋‚˜๋ˆ”
โ€ข
์ปดํ“จํ„ฐ๋Š” text ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด binary ํŒŒ์ผ๋กœ ๋ณ€ํ™˜์‹œํ‚ด (์˜ˆ: pycํŒŒ์ผ)
โ€ข
๋ชจ๋“  text ํŒŒ์ผ๋„ ์‹ค์ œ๋Š” binary ํŒŒ์ผ, ASCII/Unicode ๋ฌธ์ž์—ด ์ง‘ํ•ฉ์œผ๋กœ ์ €์žฅ๋˜์–ด ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ์Œ

ํŒŒ์ด์ฌ์—์„œ ํŒŒ์ผ ์—ด๊ธฐ

โ€ข
ํŒŒ์ด์ฌ์€ ํŒŒ์ผ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด โ€œopenโ€ ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•จ

ํŒŒ์ด์ฌ์—์„œ ํŒŒ์ผ ์ฝ๊ธฐ

โ€ข
read() txt ํŒŒ์ผ ์•ˆ์— ์žˆ๋Š” ๋‚ด์šฉ์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜
โ€ข
with ๊ตฌ๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ
โ€ข
ํ•œ ์ค„์”ฉ ์ฝ์–ด List Type์œผ๋กœ ๋ฐ˜ํ™˜ํ•จ

ํŒŒ์ด์ฌ์˜ directory ๋‹ค๋ฃจ๊ธฐ

โ€ข
os ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ Directory ๋‹ค๋ฃจ๊ธฐ
โ€ข
๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ
โ€ข
์ตœ๊ทผ์—๋Š” pathlib ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ path๋ฅผ ๊ฐ์ฒด๋กœ ๋‹ค๋ฃธ

Pickle

โ€ข
ํŒŒ์ด์ฌ์˜ ๊ฐ์ฒด๋ฅผ ์˜์†ํ™”(persistence)ํ•˜๋Š” built-in ๊ฐ์ฒด
โ€ข
๋ฐ์ดํ„ฐ, object ๋“ฑ ์‹คํ–‰์ค‘ ์ •๋ณด๋ฅผ ์ €์žฅ๏ƒจ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉ
โ€ข
์ €์žฅํ•ด์•ผํ•˜๋Š” ์ •๋ณด, ๊ณ„์‚ฐ ๊ฒฐ๊ณผ(๋ชจ๋ธ) ๋“ฑ ํ™œ์šฉ์ด ๋งŽ์Œ

Exception Handling

์˜ˆ์™ธ ์ฒ˜๋ฆฌ

โ€ข
์˜ˆ์ƒ ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ
โ—ฆ
๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ์‚ฌ์ „์— ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ
โ—ฆ
์‚ฌ์šฉ์ž์˜ ์ž˜๋ชป๋œ ์ž…๋ ฅ, ํŒŒ์ผ ํ˜ธ์ถœ ์‹œ ํŒŒ์ผ ์—†์Œ
โ—ฆ
๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ ํ•ด์•ผํ•จ
โ€ข
์˜ˆ์ƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ
โ—ฆ
์ธํ„ฐํ”„๋ฆฌํ„ฐ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ, ๊ฐœ๋ฐœ์ž ์‹ค์ˆ˜
โ—ฆ
๋ฆฌ์ŠคํŠธ์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ€๋Š” ๊ฐ’ ํ˜ธ์ถœ, ์ •์ˆ˜ 0์œผ๋กœ ๋‚˜๋ˆ”
โ—ฆ
์ˆ˜ํ–‰ ๋ถˆ๊ฐ€์‹œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์ž๋™ ํ˜ธ์ถœ

ํ”„๋กœ๊ทธ๋žจ = ์ œํ’ˆ, ๋ชจ๋“  ์ž˜๋ชป๋œ ์ƒํ™ฉ์— ๋Œ€์ฒ˜๊ฐ€ ํ•„์š”

์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฌธ๋ฒ• ์ข…๋ฅ˜

1.
try ~ except ๋ฌธ๋ฒ• + finally ์ด๋‚˜ else ํ™œ์šฉ ๊ฐ€๋Šฅ
2.
raise ๊ตฌ๋ฌธ - ํ•„์š”์—๋”ฐ๋ผ๊ฐ•์ œ๋กœException์„๋ฐœ์ƒ
3.
assert ๊ตฌ๋ฌธ - ํŠน์ •์กฐ๊ฑด์—๋งŒ์กฑํ•˜์ง€์•Š์„๊ฒฝ์šฐ์˜ˆ์™ธ๋ฐœ์ƒ
4.
Built-in Exception : ๊ธฐ๋ณธ์ ์œผ๋กœ์ œ๊ณตํ•˜๋Š”์˜ˆ์™ธ
Bulit in

Log Handling

Log๋‚จ๊ธฐ๊ธฐ - Logging

โ€ข
์œ ์ €์˜ ์ ‘๊ทผ, ํ”„๋กœ๊ทธ๋žจ์˜ Exception, ํŠน์ • ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ
โ€ข
ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ผ์–ด๋‚˜๋Š” ์ •๋ณด๋ฅผ ๊ธฐ๋ก์„ ๋‚จ๊ธฐ๊ธฐ
โ€ข
Console ํ™”๋ฉด์— ์ถœ๋ ฅ, ํŒŒ์ผ์— ๋‚จ๊ธฐ๊ธฐ, DB์— ๋‚จ๊ธฐ๊ธฐ ๋“ฑ๋“ฑ
โ€ข
๊ธฐ๋ก๋œ ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์˜๋ฏธ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœ ํ•  ์ˆ˜ ์žˆ์Œ
โ€ข
์‹คํ–‰์‹œ์ ์—์„œ ๋‚จ๊ฒจ์•ผ ํ•˜๋Š” ๊ธฐ๋ก, ๊ฐœ๋ฐœ์‹œ์ ์—์„œ ๋‚จ๊ฒจ์•ผํ•˜๋Š” ๊ธฐ๋ก

logging ๋ชจ๋“ˆ

โ€ข
Python์˜ ๊ธฐ๋ณธ Log ๊ด€๋ฆฌ ๋ชจ๋“ˆ

logging Level

โ€ข
ํ”„๋กœ๊ทธ๋žจ ์ง„ํ–‰ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ Level์˜ Log๋ฅผ ์ถœ๋ ฅํ•จ
โ€ข
๊ฐœ๋ฐœ ์‹œ์ , ์šด์˜ ์‹œ์  ๋งˆ๋‹ค ๋‹ค๋ฅธ Log๊ฐ€ ๋‚จ์„ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•จ
โ€ข
DEBUG > INFO > WARNING > ERROR > Critical
โ€ข
Log ๊ด€๋ฆฌ์‹œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์„ค์ • ์ •๋ณด
*์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ํ•  ๋–ˆ ์—ฌ๋Ÿฌ ์„ค์ •ํ•„์š”
-๋ฐ์ดํ„ฐ ํŒŒ์ผ์œ„์น˜
-ํŒŒ์ผ ์ €์žฅ ์žฅ์†Œ
-operation Type ๋“ฑ๋“ฑ
*๋ฐฉ๋ฒ• ํ•„์š” (๋‘๊ฐ€์ง€)
1.configparser -ํŒŒ์ผ์—
2.argparser - ์‹คํ–‰์‹œ์ ์—

configparser

โ€ข
ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์„ค์ •์„ file์— ์ €์žฅํ•จ
โ€ข
Section, Key, Value ๊ฐ’์˜ ํ˜•ํƒœ๋กœ ์„ค์ •๋œ ์„ค์ • ํŒŒ์ผ์„ ์‚ฌ์šฉ
โ€ข
์„ค์ •ํŒŒ์ผ์„ Dict Type์œผ๋กœ ํ˜ธ์ถœํ›„ ์‚ฌ์šฉ

configparser file

config file

argparser

โ€ข
Console ์ฐฝ์—์„œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์‹œ Setting ์ •๋ณด๋ฅผ ์ €์žฅํ•จ
โ€ข
๊ฑฐ์˜ ๋ชจ๋“  Console ๊ธฐ๋ฐ˜ Python ํ”„๋กœ๊ทธ๋žจ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต
โ€ข
ํŠน์ˆ˜ ๋ชจ๋“ˆ๋„ ๋งŽ์ด ์กด์žฌํ•˜์ง€๋งŒ(TF), ์ผ๋ฐ˜์ ์œผ๋กœ argparse๋ฅผ ์‚ฌ์šฉ
โ€ข
Command-Line Option ์ด๋ผ๊ณ  ๋ถ€๋ฆ„

Logging ์ ์šฉํ•˜๊ธฐ

Logging formmater

โ€ข
Log์˜ ๊ฒฐ๊ณผ๊ฐ’์˜ format์„ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Œ

Log config file

Logging examples