glowing713
Frontend-Deep-Dive
glowing713
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (97)
    • Languages (11)
      • JavaScript ๐Ÿ’› (3)
      • Python ๐Ÿ (4)
      • Java โ˜•๏ธ (3)
      • Swift ๐Ÿงก (1)
    • Computer_Science (1)
      • Computer_Network ๐Ÿ•ธ (1)
    • Web_Frontend (4)
      • Vue.js (1)
    • Problem_Solving (76)
    • Server (1)
      • Spring ๐Ÿ€ (1)
    • AI (2)
      • NLP ๐Ÿ—ฃ (1)
      • AI_Math โž— (1)
    • ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊พธ๋ฏธ๊ธฐ โœŒ (1)
    • ์ƒ๊ฐ์ •๋ฆฌ โœ๐Ÿป (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿง‘๐Ÿปโ€๐Ÿ’ปGithub

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • bfs
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ์ด๋ถ„ํƒ์ƒ‰
  • BOJ
  • ์นด์นด์˜ค ๊ธฐ์ถœ
  • boostcampaitech
  • c++
  • ps
  • Java
  • mst
  • DP
  • Algorithm
  • brute-force
  • binary search
  • Stack
  • ์™„์ „ํƒ์ƒ‰
  • Python
  • ๋™์ ๊ณ„ํš๋ฒ•
  • 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ
  • Baekjoon

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
glowing713

Frontend-Deep-Dive

[Python] Handling (Exception, File, Directory, Data)
Languages/Python ๐Ÿ

[Python] Handling (Exception, File, Directory, Data)

2021. 1. 22. 18:23

์•„๋ž˜์˜ ๋ณธ๋ฌธ์€ ๋ถ€์ŠคํŠธ์บ ํ”„ AI Tech 1๊ธฐ ์ˆ˜๊ฐ• ์ค‘์— ์ž‘์„ฑํ•œ ํ•™์Šต ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค๐Ÿ™‚


 

1. Exception Handling(์˜ˆ์™ธ ์ฒ˜๋ฆฌ)

 

1) try ~ except ๊ตฌ๋ฌธ

 

exceptions์ด ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

๊ทธ ๋ถ€๋ถ„๋งŒ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

# 0์œผ๋กœ ์ˆซ์ž๋ฅผ ๋‚˜๋ˆŒ ๋•Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•˜๊ธฐ
for i in range(10):
    try:
        print(10 / i)
    except ZeroDivisionError:
        print("Not divided by 0")

except ๊ตฌ๋ฌธ์„ ๋” ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

a = [1, 2, 3, 4, 5]
for i in range(10):
    try:
        print(i, 10 // i)
    except ZeroDivisionError:
        print("Not divided by 0")
    except IndexError as e:
        print(e)
    except Exception as e:    # ๋ณดํ†ต ๋งˆ์ง€๋ง‰ exception but, ์˜ˆ์™ธ๊ฐ€ ์–ด๋””์„œ ๋ฐœ์ƒํ–ˆ๋Š” ์ง€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์•Œ๊ธฐ ์–ด๋Ÿฝ๋‹ค๋Š” ๋‹จ์ 
        print(e)

 

๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์˜ˆ์™ธ์ธ Built-in-Exception์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Exception ์ด๋ฆ„ ๋‚ด์šฉ
IndexError List์˜ Index ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐˆ ๋•Œ
NameError ์กด์žฌํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ
ZeroDivisionError 0์œผ๋กœ ์ˆซ์ž๋ฅผ ๋‚˜๋ˆŒ ๋•Œ
ValueError ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž/์ˆซ์ž๋ฅผ ๋ณ€ํ™˜ํ•  ๋•Œ
FileNotFoundError ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ์„ ํ˜ธ์ถœํ•  ๋•Œ

 

2) try ~ except ~ finally ๊ตฌ๋ฌธ

 

finally ๋ถ€๋ถ„์€ ํ•ญ์ƒ ์‹คํ–‰๋œ๋‹ค.

for i in range(10):
    try:
        result = 10 // i
    except ZeroDivisionError:
        print("Not divided by 0")
    finally:
        print("์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")    # ์ด ๋ถ€๋ถ„์€ ์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์‹คํ–‰๋œ๋‹ค.

 

3) raise ๊ตฌ๋ฌธ

 

ํ•„์š”์— ๋”ฐ๋ผ ๊ฐ•์ œ๋กœ Exception์„ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ

while True:
    value = input("๋ณ€ํ™˜ํ•  ์ •์ˆ˜ ๊ฐ’์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”")
    for digit in value:
        if digit not in "0123456789":
            raise ValueError("์ˆซ์ž๊ฐ’์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ์…จ์Šต๋‹ˆ๋‹ค.")
    print("์ •์ˆ˜๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋œ ์ˆซ์ž - ", int(value))

 

4) assert ๊ตฌ๋ฌธ

 

ํŠน์ • ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

# ์‚ฌ์šฉ์ž๊ฐ€ decimal๋กœ ์ž…๋ ฅํ•ด์•ผ๋งŒ ํ•˜๋Š” ์กฐ๊ฑด
def get_binary_number(decimal_number : int):
    assert isinstance(decimal_number, int)    # assert ๋’ท ๋ถ€๋ถ„์€ True/False๊ฐ€ ํŒ๋ณ„๋˜์–ด์•ผ ํ•œ๋‹ค.
    return bin(decimal_number)

print(get_binary_number(10.0))    # AssertionError ๋ฐœ์ƒ

 

2. File Handling

 

1) File Read

 

- open, close ๋ฉ”์†Œ๋“œ

f = open("text.txt", "r")    # ๋Œ€์ƒ ํŒŒ์ผ์ด ๊ฐ™์€ ํด๋”์— ์žˆ์–ด์„œ ์ƒ๋Œ€ ์ฃผ์†Œ๋กœ ์ ‘๊ทผ
contents = f.read()
print(contents)
f.close()

 

- with ๊ตฌ๋ฌธ

 

indentation์ด ๋๋‚˜๋Š” ๋ถ€๋ถ„์—์„œ ์ž๋™์œผ๋กœ file close๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.

with open("text.txt", "r") as my_file:
    contents = my_file.read()
    print(type(contents), contents)

๊ทผ๋ฐ, contents์™€ my_file ๊ฐ’์ด with ๊ตฌ๋ฌธ์„ ๋ฒ—์–ด๋‚˜๋ฉด ์ฝํž๊นŒ? python์˜ ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„


 

- readlines() ๊ตฌ๋ฌธ

 

ํ•œ ์ค„์”ฉ ์ฝ์–ด ๋ฉ”๋ชจ๋ฆฌ์— ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ํ•œ ๋ฒˆ์— ์˜ฌ๋ฆฐ๋‹ค.

with open("text.txt", "r") as f:
    ctnt_list = f.readlines()
    print(ctnt_list)    # ๋ฆฌ์ŠคํŠธ ๊ฐ’ ์ถœ๋ ฅ

 

- readline() ๊ตฌ๋ฌธ

 

์‹คํ–‰ ์‹œ๋งˆ๋‹ค ํ•œ ์ค„์”ฉ ์ฝ์–ด์˜จ๋‹ค.

with open("text.txt", "r") as f:
    i = 0
    while True:
        line = f.readline()
        if not line:
            break
        print(str(i) + " === " + line.replace("\n", ""))
        i = i + 1

 

2) File Write

 

mode๋Š” "w", encoding="utf8"

f = open("write.txt", "w", encoding="utf8")
for i in range(1, 11):
    data = f"{i}๋ฒˆ์งธ ์ค„์ž…๋‹ˆ๋‹ค.\n"
    f.write(data)
f.close()

 

"a" ๋ชจ๋“œ๋Š” append๋กœ ๊ธฐ์กด ๋‚ด์šฉ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

with open("write.txt", "a", encoding="utf8") as f:
    for i in range(11, 21):
        data = f"{i}๋ฒˆ์งธ ์ค„์ž…๋‹ˆ๋‹ค.\n"
        f.write(data)

 

3) Directory ๋‹ค๋ฃจ๊ธฐ

 

- os ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ directory๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

import os

try:
    os.mkdir("abc")
except FileExistsError as e:
    print(e)    # ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ๋กœ๋ผ๋ฉด [Errno 17] File exists: 'abc' ์ถœ๋ ฅ

์ด๋ ‡๊ฒŒ ์ฒดํฌํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

os.path.exists("abc")

 

- pathlib ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ path๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๋‹ค๋ฃธ

import pathlib

cwd = pathlib.Path.cwd()
print(cwd)    # /Users/username/Downloads/Coding/01 - Portfolio/06 - Boostcamp AI Tech/U stage/week01
print(cwd.parent)    # /Users/username/Downloads/Coding/01 - Portfolio/06 - Boostcamp AI Tech/U stage
print(cwd.parent.parent)    # /Users/username/Downloads/Coding/01 - Portfolio/06 - Boostcamp AI Tech

directory๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๋‹ค๋ฃจ๋ฉด์„œ ์ ‘๊ทผ์— ํ›จ์”ฌ ์šฉ์ดํ•˜๋‹ค!!

 

4) Pickle(๊ฐ์ฒด๋ฅผ persistent ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” Python built-in ๋ชจ๋“ˆ)

 

- ๋ฐ์ดํ„ฐ, object ๋“ฑ ์‹คํ–‰ ์ค‘์ธ ์ •๋ณด๋ฅผ ์ €์žฅ/๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•œ๋‹ค.

- ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ์ •๋ณด, ๊ณ„์‚ฐ ๊ฒฐ๊ณผ(๋ชจ๋ธ) ๋“ฑ ํ™œ์šฉ์ด ๋‹ค์–‘ํ•˜๋‹ค.

- binary ํŒŒ์ผ๋กœ ์—ด๋ ค ์™ธ๋ถ€์—์„œ ์ฝ์„ ์ˆ˜๋Š” ์—†๋‹ค.

 

import pickle

f = open("list.pickle", "wb")
test = [1, 2, 3, 4, 5]
pickle.dump(test, f)    # test ๊ฐ์ฒด๋ฅผ list.pickle์— ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ์ €์žฅ
f.close()
f = open("list.pickle", "rb")
test_pickle = pickle.load(f)
print(test_pickle)    # [1, 2, 3, 4, 5]
f.close()

 

3. Data Handling

 

1) CSV(Comma Seperate Values)

 

- ํ•„๋“œ๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ

- ํƒญ(TSV), ๋นˆ์นธ(SSV), ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๋งŒ๋“ค๊ธฐ๋„ ํ•œ๋‹ค.

- ํ†ต์นญํ•˜์—ฌ Character-Seperated-Values(CSV)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ผ๋ฐ˜ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌํ•˜๋“ฏ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, Python์—์„œ CSV ๊ฐ์ฒด๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

import csv

reader = csv.reader(f,
         delimiter=',', quotechar='"',
         quoting=csv.QUOTE_ALL)
Attribute Default Meaning
delimiter , ๊ธ€์ž๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€
lineterminator \r\n ์ค„ ๋ฐ”๊ฟˆ ๊ธฐ์ค€
quotechar " ๋ฌธ์ž์—ด์„ ๋‘˜๋Ÿฌ์‹ธ๋Š” ์‹ ํ˜ธ ๋ฌธ์ž
"์—ฌ๊ธฐ๋ถ€ํ„ฐ ์—ฌ๊ธฐ๊นŒ์ง€๋ฅผ ํ•˜๋‚˜์˜ ํ•„๋“œ๋กœ ๋ณด์„ธ์š”"
quoting QUOTE_MINIMAL ๋ฐ์ดํ„ฐ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์ด quotechar์— ์˜ํ•ด ๋‘˜๋Ÿฌ์‹ธ์ธ ๋ ˆ๋ฒจ

 

 

*์ถ”๊ฐ€

 

์ด์ œ ํ”ผ์–ด ์„ธ์…˜์— ํŒ€์›๋ถ„๋“ค๊ณผ ์ „๋‚  ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋‚˜๋ˆ„๊ธฐ๋กœ ํ–ˆ๋‹ค.

๋ชจ์ด๋Š” ์‹œ๊ฐ„๋Œ€๊ฐ€ ์• ๋งคํ•ด์„œ ๋‹ค๋“ค ํ•œ์ฐธ ์ˆ˜์—…์„ ๋“ฃ๊ณ  ๊ณต๋ถ€๋ฅผ ํ•˜๋Š” ์ค‘๊ฐ„์— ๋ชจ์˜€๋‹ค.

๊ทธ๋ž˜์„œ ๋งŽ์€ ์–˜๊ธฐ๋ฅผ ๋ชปํ•ด๋ณธ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์˜ค๋Š˜ ์ฒ˜์Œ ์ „๋‚  ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ด์•ผ๊ธฐํ•˜๊ณ  ํŒ€์›๋ผ๋ฆฌ ๊ณผ์ œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ–ˆ๋Š”๋ฐ ์ œ์ผ ์žฌ๋ฐŒ์—ˆ๋‹ค.๐Ÿ˜

๋‚˜๋ณด๋‹ค ๋” ๊ฐ€๋…์„ฑ ์ข‹๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ง  ์ฝ”๋“œ๋„ ์žˆ์—ˆ๊ณ 

๋‹ค๋ฅธ ์ƒ๊ฐ์œผ๋กœ ์ ‘๊ทผ์„ ํ•ด๋ณธ ์ฝ”๋“œ๋ฅผ ๋ณธ๋‹ค๋Š” ๊ฒŒ ์ข‹์•˜๋‹ค!

 

๋Š˜ ๋ถ€ํŠธ์บ ํ”„๋ฅผ ํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ํฐ ์ด์œ  ์ค‘์— ํ•˜๋‚˜์ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ธฐํšŒ๊ฐ€ ๋„ˆ๋ฌด ์ข‹๋‹ค!!

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Languages > Python ๐Ÿ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] python์˜ ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„  (0) 2021.12.02
[Python] Python์˜ ์ž๋ฃŒ๊ตฌ์กฐ  (0) 2021.01.21
[Python] Immutable ๊ฐ์ฒด์™€ Mutable ๊ฐ์ฒด  (0) 2021.01.19
    'Languages/Python ๐Ÿ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python] python์˜ ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„
    • [Python] Python์˜ ์ž๋ฃŒ๊ตฌ์กฐ
    • [Python] Immutable ๊ฐ์ฒด์™€ Mutable ๊ฐ์ฒด
    glowing713
    glowing713

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”