๐ŸŒฑ → ๐ŸŒณ

๋ชจ๊ฐ์ฝ” ํŒŒ์ด์ฌ ํฌ๋กค๋ง 12์ผ์ฐจ ๋ณธ๋ฌธ

Server/Python

๋ชจ๊ฐ์ฝ” ํŒŒ์ด์ฌ ํฌ๋กค๋ง 12์ผ์ฐจ

BAY 2022. 4. 8. 16:40
728x90

#12. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 'csv'

๐Ÿ“Œ CSV ํŒŒ์ผ

"CSV"๋Š” "Comma Separated Values"์˜ ์•ฝ์–ด๋กœ, ์˜๋ฏธ ๊ทธ๋Œ€๋กœ ์ฝค๋งˆ๋กœ ๊ตฌ๋ถ„๋œ ๊ฐ’์ด๋ผ๋Š” ๋œป

๋‹ค์‹œ ๋งํ•ด, csv ํŒŒ์ผ์€ ์ฝค๋งˆ(',')๋กœ ๊ตฌ๋ถ„ํ•œ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ํ˜น์€ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋œปํ•จ

 

CSV ํŒŒ์ผ์˜ ํ™•์žฅ์ž๋Š” '.csv'์ด๊ณ , ๋ณดํ†ต ์—‘์…€์„ ํ†ตํ•ด CSV ํŒŒ์ผ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Œ

 

ํ•œ ์ค„์ด ํ•˜๋‚˜์˜ ํ–‰์ด ๋˜๊ณ , ์ฝค๋งˆ (',')๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์—ด์„ ๊ตฌ๋ถ„

 

๐Ÿ“Œ CSV ํŒŒ์ผ ์‚ฌ์šฉ ์ด์œ 

๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒŒ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ 

๋ชจ๋“  ์„œ์‹ ์ œ๊ฑฐ -> ๋‹จ์ˆœ ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ

 

๐Ÿ“ŒํŒŒ์ด์ฌ์˜ 'csv' ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

'csv' ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์ฝ๊ธฐ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” reader,

์“ฐ๊ธฐ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” writer๊ฐ€ ์กด์žฌ

 

โœ… csv ํŒŒ์ผ ์ž‘์„ฑ

ํŒŒ์ด์ฌ์œผ๋กœ csvํŒŒ์ผ์„ ์ž‘์„ฑํ•  ๋•Œ๋Š” ํ–‰ ๋‹จ์œ„๋กœ ์ž‘์„ฑ 

 

1๏ธโƒฃ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ import

 

import csv

 

2๏ธโƒฃ ํŒŒ์ผ ์ƒ์„ฑ

open ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ example.csv ํŒŒ์ผ ์ƒ์„œ ใ…‡

ํŒŒ์ผ์„ ์ฝ๊ณ , ์“ธ ๋• open ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ 

open("ํŒŒ์ผ ๊ฒฝ๋กœ" , [ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์˜ต์…˜ ], [ ๊ธฐํƒ€ ์˜ต์…˜] )

open ํ•จ์ˆ˜๋Š” ๊ฒฝ๋กœ์— ํ•ด๋‹นํ•˜๋Š” ํŒŒ์ผ์„ ์—ด๊ณ , ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•ด ์คŒ

 

ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” open ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์“ฐ๊ธฐ ์˜ต์„  'w'๋ฅผ ์ ์šฉํ•ด์•ผ ํ•จ

๋˜, ํ•œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ค„ ์˜ˆ์ •์ด๋ฏ€๋กœ ์ธ์ฝ”๋”ฉ์„ ์ถ”๊ฐ€

f = open("./example.csv", 'w', encoding="utf-8-sig")

 

3๏ธโƒฃ ์ž‘์„ฑํ•˜๋Š” ๊ฐ์ฒด ๋ณ€์ˆ˜ ์ƒ์„ฑ

writer ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด csv ํŒŒ์ผ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ

writer ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ธ์ž๋กœ, openํ•จ์ˆ˜์—์„œ ๋ฐ›์€ ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ๋„ฃ์–ด์ค˜์•ผ ํ•จ 

f = open("./example.csv", 'w', encoding="utf-8-sig")
# CSV ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฐ์ฒด ๋ณ€์ˆ˜ 'wtr' ์ƒ์„ฑ
wtr = csv.writer(f)

 

4๏ธโƒฃ ํŒŒ์ผ ์ž‘์„ฑ

writerow ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ csv ํŒŒ์ผ์— ๋ฐ์ด์ฒ˜ ์ž‘์„ฑ

writerow ํ•จ์ˆ˜๋Š” ์ธ์ž๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์Œ

๋ฐ›์€ ์ธ์ž๋“ค์€ csv ํŒŒ์ผ์—์„œ ํ•˜๋‚˜์˜ ํ–‰์„ ์ด๋ฃธ

wtr.writerow("์—ด์— ๋„ฃ์„ ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ")

 

โœ” ์—ด ์ œ๋ชฉ ์ž‘์„ฑ

# ์—ด ์ œ๋ชฉ ์ž‘์„ฑ
wtr.writerow(['์ด๋ฆ„', '๋‚˜์ด', '์–ธ์–ด'])

 

โœ” ๊ฐ ํ–‰์— ๋ฐ์ดํ„ฐ ์ž‘์„ฑ

# ๊ฐ ํ–‰์— ๋ฐ์ดํ„ฐ ์ž‘์„ฑ
for i in range(3):
    name = name_list[i]
    age = age_list[i]
    language = lan_list[i]
    wtr.writerow([name, age, language])

 

5๏ธโƒฃ ํŒŒ์ผ ๊ฐ์ฒด ๋‹ซ๊ธฐ

ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ๋‹ซ์ง€ ์•Š์œผ๋ฉด, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ €์žฅ๋˜์ง€ ์•Š์„ ๋ฟ ์•„๋‹ˆ๋ผ 

๊ณ„์† ์—ด๋ ค์žˆ๋Š” ์ƒํƒœ๋กœ ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํŒŒ์ผ์ด ์†์ƒ๋  ์œ„ํ—˜์ด ์žˆ์Œ

# ํŒŒ์ผ ๋‹ซ๊ธฐ
f.close()

cf) ํ•œ ํ–‰์”ฉ ๊ฑด๋„ˆ๋›ฐ๋ฉด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž‘์„ฑ๋˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ 

ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” 'open()' ํ•จ์ˆ˜์— ์ƒˆ๋กœ์šด ์˜ต์…˜, newline = ''์„ ์ถ”๊ฐ€

# ์˜ต์…˜ <newline = ''> ์ถ”๊ฐ€
f = open('./example.csv', 'w', newline = '', encoding="utf-8-sig")

 

๐Ÿ“Œcsv ํŒŒ์ผ ์ฝ๊ธฐ

1๏ธโƒฃ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ import

 

import csv

 

 

2๏ธโƒฃ ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์ด๋ฒˆ์—๋Š” ํŒŒ์ผ ์† ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, open ํ•จ์ˆ˜์˜ ์ฝ๊ธฐ ์˜ต์…˜์„ 'r'๋กœ ์ ์šฉ 

import csv

# ์ฝ์–ด์˜ฌ 'example.csv' ํŒŒ์ผ์„ ๋ณ€์ˆ˜ 'f'์— ์ €์žฅ
f = open('./example.csv', 'r', encoding="utf-8-sig")

 

3๏ธโƒฃ CSV ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ

csv ํŒŒ์ผ์„ ์ฝ๊ธฐ ์œ„ํ•ด์„œ๋Š” 'reader'๊ฐ์ฒด ์‚ฌ์šฉ 

# CSV ํŒŒ์ผ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€์ˆ˜ 'rdr'์— ์ €์žฅ
rdr = csv.reader(f)

์ž˜ ์ถœ๋ ฅ์ด ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ–‰๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ด์ค˜์•ผ ํ•จ

# 'rdr'์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ–‰๋ณ„๋กœ ์ถœ๋ ฅ
for row in rdr:
    print(row)

 

4๏ธโƒฃ ํŒŒ์ผ ๊ฐ์ฒด ๋‹ซ๊ธฐ

f.close()

 

โ— ๋‚˜๋Š” ์—ด์˜ ์ œ๋ชฉ์€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค!

'rdr'์— ์ €์žฅ๋œ ๊ฐ ํ–‰์˜ ๊ฐ’ ์ค‘ ์ฒซ ๋ฒˆ์งธ ํ–‰์„ ๊ฑด๋„ˆ๋›ฐ๋ฉด ๋จ

nextํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Œ

# 'rdr'์˜ ์ฒซ ๋ฒˆ์งธ๋Š” ๊ฑด๋„ˆ๋œ€
next(rdr)

 

๐Ÿ“Œ์ €์žฅ๋œ csv ํŒŒ์ผ์— ํ–‰ ์ถ”๊ฐ€

์“ฐ๊ธฐ ๋ชจ๋“œ ์˜ต์…˜ 'w'๊ฐ€ ์•„๋‹Œ, ์ถ”๊ฐ€ ๋ชจ๋“œ ์˜ต์…˜ 'a'๋ฅผ ์‚ฌ์šฉ

import csv

# ์ถ”๊ฐ€ ๋ชจ๋“œ ์˜ต์…˜ 'a' ์‚ฌ์šฉ
f = open('./example.csv', 'a', newline = '', encoding="utf-8-sig")

wtr = csv.writer(f)

wtr.writerow(['๋ฐ”๋‘‘', 40, 'ํŒŒ์ด์ฌ'])
wtr.writerow(['์˜ค๋ชฉ', 50, 'C'])

f.close()

 

โญ์ •๋ฆฌํ•˜๊ธฐโญ

โ€‹โœ” CSV: ์ฝค๋งˆ (',')๋กœ ๊ตฌ๋ถ„ํ•œ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ํ˜น์€ ํ…์ŠคํŠธ ํŒŒ์ผ

โœ” CSV๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ : ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•ด

โœ” ํŒŒ์ด์ฌ์˜ csv ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

728x90