๐พ ํ์ด์ฌ์ผ๋ก ๋ฐ์ดํฐ ์๋ฒฝ ์ ๋ณต! ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ? ์์ ํฌํจ ์ด๋ณด์๋ฅผ ์ํ A to Z ๊ฐ์ด๋!
๋ฐ์ดํฐ ๋ถ์๊ณผ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ! ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ? ์์ ํฌํจ ๊ฐ์ด๋๋ก open() ํจ์๋ถํฐ with ๊ตฌ๋ฌธ๊น์ง ๋ง์คํฐํ์ธ์. ํ
์คํธ ํ์ผ๊ณผ CSV ํ์ผ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์์ธํ ์ฝ๋ ์์ ํฌํจ ์ ๊ณตํฉ๋๋ค.
์ ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๊ธฐ๋ณธ์ผ๊น?
๋ฐ์ดํฐ ๋ถ์, ์น ํฌ๋กค๋ง, ๋ก๊ทธ ๊ด๋ฆฌ ๋ฑ ๊ฑฐ์ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์์ ์์ ํ์ผ์ ๋ค๋ฃจ๋ ๊ฒ์ ํ์์ ์ธ ๊ธฐ๋ณธ๊ธฐ์ ๋๋ค. ์๋ฌด๋ฆฌ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋๋ผ๋, ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๋ ๋ฅ๋ ฅ์ด ์๋ค๋ฉด ๋ฌด์ฉ์ง๋ฌผ์ด์ฃ . ํนํ, ์ฌ์ฉ์ ๊ฐํธํจ๊ณผ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ผ๋ก ๋ฌด์ฅํ ํ์ด์ฌ์ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ ์์ ์ ์ต์ ํ๋ ์ธ์ด์ ๋๋ค.
ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ? ์์ ํฌํจ ์๋ฒฝ ๊ฐ์ด๋๋ฅผ ํตํด, ์ฐ๋ฆฌ๋ ํ
์คํธ ํ์ผ(txt)๋ฟ๋ง ์๋๋ผ ์ค๋ฌด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ CSV ํ์ผ์ ํจ์จ์ ์ผ๋ก ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ๊ฒ์
๋๋ค. ํ์ด์ฌ์ ํต์ฌ์ธ open() ํจ์ ์ฌ์ฉ๋ฒ๋ถํฐ, ์์์ ์์ ํ๊ฒ ๊ด๋ฆฌํ๋ with ๊ตฌ๋ฌธ, ๊ทธ๋ฆฌ๊ณ ๋ค์ํ ํ์ผ ๋ชจ๋๊น์ง ์น์ ํ๊ณ ์ ๋ฌธ์ ์ธ ํค์ผ๋ก ํ๋ํ๋ ์ง์ด๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ธ์ ๋๊น์ง ์ฝ์ผ์๋ฉด ์ฌ๋ฌ๋ถ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ์๋ฒฝํ๊ฒ ๋ค์ง๊ณ , ์ด๋ค ํ์ผ๋ ์์ ์์ฌ๋ก ๋ค๋ฃจ๋ ๋ฅ๋ ฅ์๊ฐ ๋ ์ ์์ต๋๋ค! 
ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ์ ํต์ฌ: open() ํจ์์ with ๊ตฌ๋ฌธ
ํ์ด์ฌ์์ ํ์ผ์ ๋ค๋ฃจ๋ ๋ชจ๋ ์์
์ ๋ด์ฅ ํจ์์ธ open() ํจ์์์ ์์๋ฉ๋๋ค. ์ด ํจ์๋ ํ์ผ ๊ฒฝ๋ก์ ์ ๊ทผ ๋ชจ๋๋ฅผ ์ธ์๋ก ๋ฐ์ ํ์ผ ๊ฐ์ฒด(File Object)๋ฅผ ๋ฐํํฉ๋๋ค.
file = open("ํ์ผ๊ฒฝ๋ก", "์ ๊ทผ๋ชจ๋", encoding="์ธ์ฝ๋ฉ")
ํ์ง๋ง ํ์ผ ์์
์ ํ ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ **'ํ์ผ ๋ซ๊ธฐ'**์
๋๋ค. ํ์ผ์ ์ด๊ณ ์์
์ ๋ง์น ํ file.close()๋ฅผ ํธ์ถํ์ฌ ์์์ ํด์ ํ์ง ์์ผ๋ฉด, ๋ฉ๋ชจ๋ฆฌ ๋์๋ ํ์ผ ์์ ๋ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ณ ์ฝ๋๋ฅผ ๋ ๊น๋ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ํ์ด์ฌ์์๋ with ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. with ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ฉด ํ์ผ ์์
์ด ๋๋๋ ์๊ฐ ์๋์ผ๋ก close() ํจ์๊ฐ ํธ์ถ๋์ด ์์์ ์์ ํ๊ฒ ํด์ ํฉ๋๋ค.
#
with ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ํ์ผ ์์ ํ๊ฒ ์ด๊ธฐ (๊ถ์ฅ!)
with open("data.txt", "w", encoding="utf-8") as f:
f.write("์๋
ํ์ธ์, ํ์ด์ฌ ํ์ผ ์ฐ๊ธฐ ์์ ์
๋๋ค.")
#
์ ํต์ ์ธ ๋ฐฉ์ (์๋์ผ๋ก ๋ซ์์ผ ํจ)
f = open("data_old.txt", "w", encoding="utf-8")
f.write("์๋์ผ๋ก ๋ซ์์ผ ํ๋ ํ์ผ์
๋๋ค.")
f.close()
๋ชจ๋ ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ ์์
์์๋ with open(...) as f: ํํ๋ฅผ ์ต๊ดํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํ์ผ ์ ๊ทผ ๋ชจ๋ ์๋ฒฝ ์ ๋ฆฌ: ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ์ ์ต์
open() ํจ์์์ ๋ ๋ฒ์งธ ์ธ์๋ก ์ฌ์ฉํ๋ ์ ๊ทผ ๋ชจ๋๋ ํ์ผ์ ์ด๋ค ์์
์ ํ ๊ฒ์ธ์ง ์ง์ ํฉ๋๋ค. ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ ์์
์ ํ์ํ ์ฃผ์ ๋ชจ๋๋ค์ ์ ๋ฆฌํ์ต๋๋ค.
| ๋ชจ๋ | ์ด๋ฆ | ์ค๋ช | ์ฃผ์ ์ฌํญ |
r | Read (์ฝ๊ธฐ) | ํ์ผ ๋ด์ฉ์ ์ฝ๊ธฐ๋ง ํฉ๋๋ค. ํ์ผ์ด ์์ผ๋ฉด ์๋ฌ ๋ฐ์. | ํ์ผ์ ๋ด์ฉ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. |
w | Write (์ฐ๊ธฐ) | ํ์ผ์ ๋ด์ฉ์ ์๋๋ค. ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ๋ฉด ๋ด์ฉ์ด ๋ชจ๋ ์ง์์ง๊ณ ์๋ก ์์ฑ๋ฉ๋๋ค. | ๋ฐ์ดํฐ ์์ค ์ํ! |
a | Append (์ถ๊ฐ) | ํ์ผ์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ด์ฉ์ ์ถ๊ฐํฉ๋๋ค. ๊ธฐ์กด ๋ด์ฉ์ ์ ์ง๋ฉ๋๋ค. | ํ์ผ์ด ์์ผ๋ฉด ์๋ก ์์ฑ๋ฉ๋๋ค. |
r+ | Read + Write | ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ๋ฅํฉ๋๋ค. | ํ์ผ ํฌ์ธํฐ ์์น์ ์ฃผ์ํด์ผ ํฉ๋๋ค. |
ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ? ์์ ํฌํจ ์ค์ต์์๋ ์ฃผ๋ก **r**๊ณผ w, ๊ทธ๋ฆฌ๊ณ a ๋ชจ๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ํนํ w ๋ชจ๋๋ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ธ ์ํ์ด ์์ผ๋ ์ฌ์ฉ์ ํญ์ ์ ์ํด์ผ ํฉ๋๋ค. 
ํ
์คํธ ํ์ผ ๋ค๋ฃจ๊ธฐ: ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ ์ค์ ์ฝ๋ ์์
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํ์ผ ํ์์ธ ํ
์คํธ ํ์ผ(.txt)์ ๋ค๋ฃจ๋ ์ค์ ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ ์ฝ๋ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ํ์ผ ์ฐ๊ธฐ (w ๋ชจ๋ ์ฌ์ฉ)
# ์ฐ๊ธฐ ์์ (write_example.txt)
data_to_write = [
"์ฒซ ๋ฒ์งธ ์ค ๋ฐ์ดํฐ์
๋๋ค.\n",
"๋ ๋ฒ์งธ ์ค์ ์ค์ํ ์ ๋ณด์
๋๋ค.\n",
"๋ง์ง๋ง ์ค๊น์ง ํ์ผ ์ฐ๊ธฐ ์๋ฃ!"
]
with open("write_example.txt", "w", encoding="utf-8") as f:
f.write("์ด ์ค์ ์ฒซ ๋ฒ์งธ๋ก ๋ฎ์ด์์์ง๋๋ค.\n")
# ๋ฆฌ์คํธ์ ๋ชจ๋ ์์๋ฅผ ํ์ผ์ ํ ์ค์ฉ ์๋๋ค.
f.writelines(data_to_write)
print("
ํ์ผ ์ฐ๊ธฐ ์๋ฃ: write_example.txt")
2. ํ์ผ ์ฝ๊ธฐ (r ๋ชจ๋ ์ฌ์ฉ)
ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ์๋ ์ฃผ๋ก ์ธ ๊ฐ์ง ๋ฉ์๋๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
read(): ํ์ผ ์ ์ฒด ๋ด์ฉ์ ํ๋์ ๋ฌธ์์ด๋ก ์ฝ์ด์ต๋๋ค.readline(): ํ์ผ์ ๋ด์ฉ์ ํ ์ค์ฉ ์ฝ์ด์ต๋๋ค. (๋ฐ๋ณต๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉ ๊ฐ๋ฅ)readlines(): ํ์ผ์ ๋ชจ๋ ๋ด์ฉ์ ๋ฆฌ์คํธ ํํ๋ก ์ฝ์ด์ต๋๋ค. (๊ฐ ์ค์ด ๋ฆฌ์คํธ์ ์์๊ฐ ๋จ)
# ์ฝ๊ธฐ ์์
with open("write_example.txt", "r", encoding="utf-8") as f:
# 1. ํ์ผ ์ ์ฒด๋ฅผ ์ฝ๊ธฐ
# content = f.read()
# print("--- ์ ์ฒด ๋ด์ฉ ---")
# print(content)
# 2. ํ ์ค์ฉ ๋ฐ๋ณตํ๋ฉฐ ์ฝ๊ธฐ (๊ฐ์ฅ ํํ๊ฒ ์ฌ์ฉ)
print("--- ํ ์ค์ฉ ์ฝ๊ธฐ ---")
for line in f:
print(line.strip()) # .strip()์ผ๋ก ์ค ๋์ \n ์ ๊ฑฐ
์ด๋ฌํ ๊ธฐ๋ณธ ๋ฉ์๋๋ฅผ ํตํด ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ์ ๊ธฐ์ด๋ฅผ ๋ค์ง ์ ์์ต๋๋ค.
๊ณ ๊ธ ํ์ฉ: CSV ํ์ผ๊ณผ ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ (csv ๋ชจ๋)
์ค๋ฌด ๋ฐ์ดํฐ๋ ๋๋ถ๋ถ ์ผํ๋ก ๊ตฌ๋ถ๋ ๊ฐ(CSV) ํํ์
๋๋ค. ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ๋ฅผ CSV ํ์ผ์ ์ ์ฉํ๋ ค๋ฉด ๋ด์ฅ csv ๋ชจ๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ํจ์จ์ ์
๋๋ค. csv ๋ชจ๋์ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ด์ฌ์ ๋ฆฌ์คํธ๋ ๋์
๋๋ฆฌ๋ก ์ฝ๊ฒ ๋ณํํด ์ค๋๋ค.
1. CSV ํ์ผ ์ฐ๊ธฐ (csv.writer ์ฌ์ฉ)
import csv
data_csv = [
['์ด๋ฆ', '๋์ด', '์ง์
'],
['๊นํ์ด', 30, '๊ฐ๋ฐ์'],
['์ด๋ค์', 25, '๋ฐ์ดํฐ ๋ถ์๊ฐ'],
['๋ฐ๋ฏผํธ', 40, 'PM']
]
# csv ํ์ผ ์ฐ๊ธฐ (newline=''์ ์๋์ฐ์์ ์ค๋ฐ๊ฟ ์ค๋ฅ ๋ฐฉ์ง)
with open('users.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(data_csv) # ์ฌ๋ฌ ํ์ ํ ๋ฒ์ ์ฐ๊ธฐ
print("
CSV ํ์ผ ์ฐ๊ธฐ ์๋ฃ: users.csv")
2. CSV ํ์ผ ์ฝ๊ธฐ (csv.reader ์ฌ์ฉ)
import csv
# csv ํ์ผ ์ฝ๊ธฐ
with open('users.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
print("--- CSV ํ์ผ ์ฝ๊ธฐ ๊ฒฐ๊ณผ ---")
# reader๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด์ด๋ฉฐ, ๊ฐ ํ์ ๋ฆฌ์คํธ๋ก ๋ฐํํฉ๋๋ค.
for row in reader:
# ['์ด๋ฆ', '๋์ด', '์ง์
'] ํํ์ ๋ฆฌ์คํธ๋ก ์ถ๋ ฅ
print(f"์ด๋ฆ: {row[0]}, ๋์ด: {row[1]}, ์ง์
: {row[2]}")
csv ๋ชจ๋์ ํ์ฉํ๋ฉด ํ
์คํธ ๊ธฐ๋ฐ์ ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ๋ณด๋ค ํจ์ฌ ๊ตฌ์กฐ์ ์ด๊ณ ์ฒด๊ณ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ์ค๋ฌด์์์ ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ ํต์ฌ์
๋๋ค.
๊ฒฐ๋ก : ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ? ์์ ํฌํจ ๊ฐ์ด๋๋ก ๋ง์คํฐํ๊ธฐ!
์ง๊ธ๊น์ง ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ? ์์ ํฌํจ ์๋ฒฝ ๊ฐ์ด๋๋ฅผ ํตํด open() ํจ์, with ๊ตฌ๋ฌธ, ๋ค์ํ ์ ๊ทผ ๋ชจ๋, ๊ทธ๋ฆฌ๊ณ ํ
์คํธ/CSV ํ์ผ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ๊น์ง ๋ชจ๋ ์ดํด๋ณด์์ต๋๋ค.
ํต์ฌ์ with ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ํ์ผ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๊ณ , ๋ชฉ์ ์ ๋ง๋ ์ ๊ทผ ๋ชจ๋(r, w, a)๋ฅผ ์ ํํ ์ ํํ๋ ๊ฒ์
๋๋ค. ํนํ ๋ฐ์ดํฐ ๋ถ์์์๋ csv ๋ชจ๋์ ํ์ฉํ ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ๊ฐ ํ์์ ์์ ๊ธฐ์ตํด ์ฃผ์ธ์. ์ด ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ์คํ ๋ค์ง๋ค๋ฉด ์ด๋ค ๋ฐ์ดํฐ๋ ๋๋ ต์ง ์์ ๊ฒ์
๋๋ค! 
CTA: ์ค๋ ๋ฐฐ์ด ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ ์์ ๋ฅผ ์ฌ๋ฌ๋ถ์ ์ปดํจํฐ์์ ์ง์ ์คํํด ๋ณด์ธ์! ํ์ผ ์ฒ๋ฆฌ ์ค ๊ถ๊ธํ ์ ์ด๋ ๋ค์๋ฒ์ ๋ค๋ฃจ์์ผ๋ฉด ํ๋ ์ฃผ์ ๊ฐ ์๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์. ์ฌ๋ฌ๋ถ์ ์ฝ๋ฉ ํ์ต์ ์์ํฉ๋๋ค!
FAQ (์์ฃผ ๋ฌป๋ ์ง๋ฌธ)
Q1: open() ํจ์ ์ฌ์ฉ ์ encoding='utf-8'์ ๊ผญ ์ง์ ํด์ผ ํ๋์?
A: ๋ค, ์ง์ ํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ํนํ ํ๊ธ์ ํฌํจํ ํ์ผ์ ๋ค๋ฃฐ ๋ ์ธ์ฝ๋ฉ์ ๋ช
์ํ์ง ์์ผ๋ฉด ์์คํ
๊ธฐ๋ณธ ์ธ์ฝ๋ฉ(์: ์๋์ฐ CP949)์ด ์ ์ฉ๋์ด ํ์ผ์ด ๊นจ์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. utf-8์ ๊ฐ์ฅ ๊ตญ์ ์ ์ผ๋ก ํต์ฉ๋๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์
๋๋ค.
Q2: ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ ์์ ์ค ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋๋์?
A:
r(์ฝ๊ธฐ) ๋ชจ๋: ํ์ผ์ด ์์ผ๋ฉด **FileNotFoundError**๊ฐ ๋ฐ์ํฉ๋๋ค.w(์ฐ๊ธฐ) ๋ชจ๋: ํ์ผ์ด ์์ผ๋ฉด ์๋ก์ด ํ์ผ์ ์์ฑํฉ๋๋ค.a(์ถ๊ฐ) ๋ชจ๋: ํ์ผ์ด ์์ผ๋ฉด ์๋ก์ด ํ์ผ์ ์์ฑํฉ๋๋ค.
Q3: read()์ readlines()์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
A: **read()**๋ ํ์ผ ์ ์ฒด ๋ด์ฉ์ **ํ๋์ ๊ฑฐ๋ํ ๋ฌธ์์ด(string)**๋ก ์ฝ์ด์ต๋๋ค. ๋ฐ๋ฉด, **readlines()**๋ ํ์ผ์ ๊ฐ ์ค์ ํ๋์ ์์๋ก ํ๋ ๋ฆฌ์คํธ(list) ํํ๋ก ์ฝ์ด์ต๋๋ค. ๋์ฉ๋ ํ์ผ์ ๋ค๋ฃฐ ๋๋ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ์ํด for line in f: ํํ๋ก ํ ์ค์ฉ ์ฝ๋ ๋ฐฉ์์ ์ถ์ฒํฉ๋๋ค.
Q4: ํ์ด์ฌ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ ์์
์ ํ ๋ ํญ์ with ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค.
A: with ๊ตฌ๋ฌธ์ ํ์ผ ์์
์ ๋ง์น๋ฉด ํ์ด์ฌ์ด ์๋์ผ๋ก close() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํ์ผ ์์์ ํด์ ํด ์ค๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ์ง ์๊ณ open()๋ง ์ฌ์ฉํ ๊ฒฝ์ฐ, ์์ธ๊ฐ ๋ฐ์ํ๋ฉด close()๊ฐ ํธ์ถ๋์ง ์์ ํ์ผ์ด ์์๋๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์์ ํ๊ณ ๊นจ๋ํ ์ฝ๋๋ฅผ ์ํด ํ์์ ์
๋๋ค.

๋๊ธ
๋๊ธ ์ฐ๊ธฐ