1. ํŒŒ์ผ

๐Ÿ“  ๋ณ€์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์ข‹์€ ๋ฐฉ๋ฒ•
        โžก๏ธ  ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•œ ํ›„์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด์•ผ ํ•จ

 

1) ํŒŒ์ผ๊ณผ ํŒŒ์ผ ๊ฒฝ๋กœ

 

   โšก๏ธ  ํŒŒ์ผ์—๋Š” ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๊ฒฝ๋กœ๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š”์†์„ฑ์ด ์žˆ๋‹ค.
          ex. ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋…ธํŠธ๋ถ ์ปดํ“จํ„ฐ์˜ C:\Users\al\Documents ๋ผ๋Š” ๊ฒฝ๋กœ์—

                 project.docx ๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ
                  โ–ถ๏ธ  ํŒŒ์ผ์ด๋ฆ„ project.docx๋Š” ์›Œ๋“œ ๋ฌธ์„œ์ด๊ณ  Users, al, Documents๋Š” ๋ชจ๋‘ ํด๋”(๋””๋ ‰ํ† ๋ฆฌ)
                  โ–ถ๏ธ  ํด๋” ์•ˆ์—๋Š” ํŒŒ์ผ์ด๋‚˜ ๋‹ค๋ฅธ ํด๋”๊ฐ€ ๋“ค์–ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ

   โšก๏ธ ๊ฒฝ๋กœ์˜ C:\๋Š” ๋ฃจํŠธ ํด๋”๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๋ชจ๋“  ํด๋”๊ฐ€ ์ด ์•ˆ์— ๋“ค์–ด ์žˆ์Œ
          ๐Ÿ“Œ  ์œˆ๋„์šฐ์—์„œ ๋ฃจํŠธ ํด๋”์˜ ์ด๋ฆ„์€ "C:\"์ด๋ฉฐ, C ๋“œ๋ผ์ด๋ธŒ๋ผ๊ณ  ๋ถ€๋ฆ„.
          ๐Ÿ“Œ  ๋งฅos๋‚˜ ๋ฆฌ๋ˆ…์Šค์—์„œ ๋ฃจํŠธ ํด๋”๋Š” "/"
          ๐Ÿ“Œ  ์œˆ๋„์šฐ, ๋งฅos์—์„œ๋Š” ํด๋”์ด๋ฆ„์ด๋‚˜ ํŒŒ์ผ์ด๋ฆ„์˜ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์ง€๋งŒ, ๋ฆฌ๋ˆ…์Šค์˜ ๊ฒฝ์šฐ ์ด๋ฅผ ๊ตฌ๋ถ„ํ•จ

   โšก๏ธ ์œˆ๋„์šฐ์—์„œ์˜ ํด๋” ๊ตฌ๋ถ„์€ "\" ๋ฐฑ์Šฌ๋Ÿฌ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋งฅ os๋‚˜ ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” "/" ์Šฌ๋Ÿฌ์‹œ๋ฅผ ์‚ฌ์šฉํ•จ.

# 1) Path ๊ฐ์ฒด ์‚ฌ์šฉ.
from pathlib import Path
path = Path('spam', 'bacon', 'eggs')  # ์šด์˜์ฒด์ œ์— ๋งž๋Š” ๊ฒฝ๋กœ ์ฒด์ œ๋ฅผ ๋งŒ๋“ค์–ด ์คŒ.
print(path)  # spam/bacon/eggs

# 2) platform.system() ํ•จ์ˆ˜ ์‚ฌ์šฉ.
import platform
my_os = platform.system()
print("OS in my system: ", my_os)  # OS in my system:  Darwin
if my_os == 'Darwin':
    print('Mac ์šด์˜์ฒด์ œ ์ž…๋‹ˆ๋‹ค.')
else:
    print('Mac ์šด์˜์ฒด์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.')
# ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ
print(Path.cwd())  # /Users/Desktop/pycharm/pythonProject/part2

 

2) ์ ˆ๋Œ€ ๊ฒฝ๋กœ์™€ ์ƒ๋Œ€ ๊ฒฝ๋กœ


โšก๏ธ ์ ˆ๋Œ€ ๊ฒฝ๋กœ : ํ•ญ์ƒ ๋ฃจํŠธ ํด๋”์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ๋กœ
โšก๏ธ ์ƒ๋Œ€ ๊ฒฝ๋กœ : ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ 
     ๐Ÿ“Œ  '.' : ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ
    ๐Ÿ“Œ  '..' : ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ


 

3) ์ƒˆ๋กœ์šด ๋””๋ ‰ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ

 

โšก๏ธ os.makedirs() ํ•จ์ˆ˜๋กœ ์ƒˆ๋กœ์šด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ
โšก๏ธ os.path.isdir(path) : path ์ธ์ž์˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ

import os
path = './test'
if not os.path.isdir(path):
    os.makedirs(path)  # ํ˜„์žฌ ์ž‘์—… ํด๋” ์•ˆ์— test๋ผ๋Š” ํด๋” ์ƒ์„ฑ.

 

4) ํŒŒ์ผ ํฌ๊ธฐ์™€ ํด๋” ๋‚ด์šฉ ํ™•์ธ

 

โšก๏ธ os.path.getsize(path) : path ์ธ์ž์— ํ•ด๋‹นํ•˜๋Š” ํŒŒ์ผ ํฌ๊ธฐ ๋ฐ˜ํ™˜
โšก๏ธ os.listdir(path) : path์— ์žˆ๋Š” ํŒŒ์ผ ์ด๋ฆ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜

path = './input'
print(os.path.getsize(f'{path}/hello.txt'))  # 53
list_dirs = os.listdir(path)
print(list_dirs)  # ['์—ฐ๋ฝ์ฒ˜.txt', 'hello.txt', '์—„๋งˆ๋ผ์ง€์•„๊ธฐ๋ผ์ง€.txt']

 


 

2. ํŒŒ์ผ ์—ด๊ธฐ

๐Ÿ“  ์ž…์ถœ๋ ฅ ํŒŒ์ผ์„ ์ง€์ •ํ•˜๋Š”๊ฒƒ์„ ์˜๋ฏธ ( ํŒŒ์ผ ๊ฐ์ฒด ์ƒ์„ฑ )
๐Ÿ“  ํŒŒ์ผ ์ž…๋ ฅ๊ณผ ํŒŒ์ผ ์ถœ๋ ฅ ๋ชจ๋‘ ๋ฐ˜๋“œ์‹œ ํŒŒ์ผ ์—ด๊ธฐ ์ž‘์—…์„ ๊ฐ€์žฅ ๋จผ์ € ์ˆ˜ํ–‰

ํŒŒ์ผ๊ฐ์ฒด = open(ํŒŒ์ผ๋ช…, ๋ชจ๋“œ)


1) ํŒŒ์ผ๋ช…

๐Ÿš€  ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ํŒŒ์ผ์„ ์˜๋ฏธ
๐Ÿš€  ํŒŒ์ผ๋ช…๋งŒ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๊ฒฝ๋กœ๋ฅผ ํ•จ๊ป˜ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์Œ

# ํŒŒ์ผ๋ช…๋งŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ : ํŒŒ์ด์ฌ ์†Œ์Šค ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๊ฒฝ๋กœ์— ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ
open('sample.txt')

# ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ : ๋นˆ๋„๊ฐ€ ์ ์Œ.
open('C:/sample.txt')

# ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ(.)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •
open('./sample.txt')
open('./input/hello.txt')

# ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ(..)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •
open('../sample.txt')

2) ๋ชจ๋“œ

r (read) ์ฝ๊ธฐ
w (write) ์“ฐ๊ธฐ (์ƒˆ๋กœ ์“ฐ๊ธฐ ๋ชจ๋“œ)
a (append) ์ถ”๊ฐ€ (๋’ค์— ์ด์–ด์„œ ์“ฐ๊ธฐ ๋ชจ๋“œ)
x (exclusive) ๋ฐฐํƒ€์  ์ถ”๊ฐ€ (ํŒŒ์ผ ์žˆ์œผ๋ฉด ์˜ค๋ฅ˜, ์—†์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑ)


๐Ÿš€  ํŒŒ์ผ์˜ ์ข…๋ฅ˜
     - t (text) ํ…์ŠคํŠธ ํŒŒ์ผ : ๋ฉ”๋ชจ์žฅ์œผ๋กœ ์—ด ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ
     - b (binary) ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ (ํ…์ŠคํŠธ ํŒŒ์ผ ์™ธ์˜ ๋ชจ๋“  ํŒŒ์ผ)


 

3. ํŒŒ์ผ ๋‹ซ๊ธฐ

๐Ÿ‘พ  ํŒŒ์ผ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๊ณ ์ž ํ•  ๋•Œ

ํŒŒ์ผ๊ฐ์ฒด.close()

 


 

4. ํŒŒ์ผ ์ƒ์„ฑ

file = open('./output/my_file.txt', 'wt')  # ๋นˆํŒŒ์ผ ์ƒ์„ฑ
print('my_file.txt ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.')
file.close()

# ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์ƒˆ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“œ์ธ wt ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ my_file.txt๋ผ๋Š” ์ด๋ฆ„์˜
# ํ…์ŠคํŠธ ํŒŒ์ผ์„ output ์ด๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ

๐Ÿš€   with๋ฌธ
    -  close() ๋ฉ”์†Œ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์„ ์ œ๊ณต
    -  with๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด with๋ฌธ์ด ๋๋‚  ๋•Œ ์–ธ์ œ๋‚˜ close() ๋ฉ”์†Œ๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ

         โžก๏ธ  ๋ณ„๋„์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๋”๋ผ๋„ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ํŒŒ์ผ์˜ ์—๋Ÿฌ๋กœ close()๊ฐ€ ํ˜ธ์ถœ์ด ์•ˆ๋˜๋Š” ์ƒํ™ฉ์„ ๋ฐฉ์ง€

# ๊ธฐ๋ณธ ๊ตฌ์„ฑ
with open (ํŒŒ์ผ๋ช…, ๋ชจ๋“œ) as ํŒŒ์ผ๊ฐ์ฒด:
    ํŒŒ์ผ์ฒ˜๋ฆฌ์ฝ”๋“œ
with open('./output/my_file_1.txt', 'wt') as file:
    print('my_file_1.txt ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.')

 

5.  ํŒŒ์ผ ์ž…์ถœ๋ ฅ

๐Ÿ“  ํŒŒ์ผ ์ž…์ถœ๋ ฅ : ์ปดํ“จํ„ฐ์— ์ €์žฅ๋œ ํŒŒ์ผ์„ ์ฝ์–ด ๋“ค์ด๋Š” ๊ฒƒ์€ ๋ฌผ๋ก  ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์„œ ์ปดํ“จํ„ฐ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ
    ๐Ÿ“Œ ํŒŒ์ผ ์ž…๋ ฅ input : ๊ธฐ์กด์˜ ํŒŒ์ผ ๋‚ด์šฉ์„ ์ฝ์–ด ๋“ค์ด๋Š” ๊ฒƒ
    ๐Ÿ“Œ ํŒŒ์ผ ์ถœ๋ ฅ output : ๊ธฐ์กด ํŒŒ์ผ์— ์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ

 

1) ํŒŒ์ผ ์ถœ๋ ฅ output

# 1. ํ…์ŠคํŠธ ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ
file = open('./output/hello.txt', 'wt')

# hello.txt์— ๊ธ€ ์“ฐ๊ธฐ.
file.write('์•ˆ๋…•ํ•˜์„ธ์š”.')
file.write('\n')  # ์ค„ ๋ฐ”๊ฟˆ
file.write('๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค.')
file.write('\n')
print('hello.txt ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.')  # ์ง„ํ–‰ ์ƒํ™ฉ์„ ์•Œ๊ธฐ ์œ„ํ•ด์„œ ํ™”๋ฉด ์ถœ๋ ฅ.

file.close()

# 2. ํ…์ŠคํŠธ ํŒŒ์ผ์— ๋‚ด์šฉ ์ถ”๊ฐ€ํ•˜๊ธฐ
# ๊ธฐ์กด ํŒŒ์ผ์— ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“œ๋Š” a ๋ชจ๋“œ
file = open('./output/hello.txt', 'at')

file.write('Hello.\n')
file.write('Nice to meet you.\n')
print('hello.txt ํŒŒ์ผ์— ์ƒˆ๋กœ์šด ๋‚ด์šฉ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.')

file.close()

 


2) ํŒŒ์ผ ์ž…๋ ฅ  input

1)  read() ๋ฉ”์†Œ๋“œ

๐Ÿ“  ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” ๋ฉ”์†Œ๋“œ
๐Ÿ“  ํ…์ŠคํŠธ ๋ชจ๋“œ์™€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ์—์„œ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘

file.read(size)


    ๐Ÿ‘พ  ๋ฐ˜ํ™˜๊ฐ’ : ํ…์ŠคํŠธ ๋ชจ๋“œ - ์ฝ์–ด ๋“ค์ธ ๋ฌธ์ž์—ด, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ - ์ฝ์–ด ๋“ค์ธ ๋ฐ”์ดํŠธ์—ด
    ๐Ÿ‘พ  ๋งค๊ฐœ๋ณ€์ˆ˜ size : ํ…์ŠคํŠธ ๋ชจ๋“œ- ์ฝ์–ด ๋“ค์ผ ์ตœ๋Œ€ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ- ์ฝ์–ด ๋“ค์ผ ์ตœ๋Œ€ ๋ฐ”์ดํŠธ ์ˆ˜
    ๐Ÿ‘พ  ๋งค๊ฐœ๋ณ€์ˆ˜ size ์ƒ๋žต : ํŒŒ์ผ ์ „์ฒด ์ฝ์Œ
    ๐Ÿ‘พ  ํŒŒ์ผ์˜ ๋์— ๋„๋‹ฌ : ๋นˆ ๋ฌธ์ž์—ด ('') ๋ฐ˜ํ™˜

file = open('./input/hello.txt', 'rt', encoding='cp949')

str = file.read()  # ํŒŒ์ผ ์ „์ฒด๋ฅผ ํ•œ ๋ฒˆ์— ์ฝ์–ด ๋“ค์ž„
print(str, end='')

file.close()

 

    ๐Ÿ’ก 'encoding = cp949' ๋Š” ๋งฅ os ์—์„œ ํŒŒ์ผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ


2)  readline() ๋ฉ”์†Œ๋“œ

๐Ÿ“  ํ…์ŠคํŠธ ํŒŒ์ผ์„ ํ•œ ์ค„์”ฉ ์ฝ์–ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ
๐Ÿ“  ํŒŒ์ผ์ด ์ข…๋ฃŒ๋˜์–ด ๋” ์ด์ƒ ์ฝ์–ด ๋“ค์ผ ๊ธ€์ž๊ฐ€ ์—†์œผ๋ฉด ๋นˆ ๋ฌธ์ž์—ด('')์„ ์ฝ์–ด ๋“ค์ž„
๐Ÿ“  ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฝ์–ด ๋“ค์–ด์•ผ ํŒŒ์ผ ์ „์ฒด๋ฅผ ์ฝ์–ด ๋“ค์ผ ์ˆ˜ ์žˆ์Œ

file = open('./input/hello.txt', 'rt', encoding='cp949')

while True:
    str = file.readline()
    if str == '':
        break
    print(str, end='')

file.close()

3) readlines() ๋ฉ”์†Œ๋“œ

๐Ÿ“  ๋ผ์ธ line ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ „์ฒด ๋ผ์ธ lines์„ ๋ชจ๋‘ ์ฝ์–ด ๊ฐ ๋ผ์ธ line ๋‹จ์œ„๋กœ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•˜๋Š” ๋ฉ”์†Œ๋“œ

file = open('input/hello.txt', 'rt', encoding='cp949')

line_list = file.readlines()
print(line_list) # ['์•ˆ๋…•ํ•˜์„ธ์š”.\n', '๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค.\n', 'Hello.\n', 'Nice to meet you.\n']
for line in line_list:
    print(line, end='')

file.close()

# enumrate() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ผ์ธ ๋ฒˆํ˜ธ line number ๋„ ํ•จ๊ป˜ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค
file = open('input/hello.txt', 'rt', encoding='cp949')

line_list = file.readlines()
for no, line in enumerate(line_list):
    print('{} {}'.format(no + 1, line), end='')

file.close()

# sys ๋ชจ๋“ˆ์„ ์ด์šฉํ•˜๋ฉด ๋ณด๋‹ค ์‰ฝ๊ฒŒ ํŒŒ์ผ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค
# sys ๋ชจ๋“ˆ์—๋Š” ํ‘œ์ค€ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ stdin๊ณผ stdout ๊ฐ์ฒด๊ฐ€ ํฌํ•จ
# stdout์€ ์ถœ๋ ฅ์„ ์œ„ํ•œ ๊ฐ์ฒด์ด๋ฉฐ ํ™”๋ฉด ์ถœ๋ ฅ ๋ฉ”์†Œ๋“œ์ธ write()์™€ writelines() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
# writelines() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด์˜ ๊ฐ ์š”์†Œ๋ฅผ ํ•œ ์ค„์”ฉ ์ž๋™์œผ๋กœ ์ถœ๋ ฅ

import sys

file = open('input/hello.txt', 'rt', encoding='cp949')

line_list = file.readlines()
sys.stdout.writelines(line_list)

file.close()

 


 

6. pickle

๐Ÿ“  ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ์ž๋ฃŒํ˜• (๋ฆฌ์ŠคํŠธ๋‚˜ ๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•๋“ฑ)์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์‹
๐Ÿ“  import pickle์„ ํ†ตํ•˜์—ฌ ๋ชจ๋“ˆ ์ž„ํฌํŠธ๊ฐ€ ํ•„์š”
๐Ÿ“  pickle๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ๋Š” ํŒŒ์ผ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์œผ๋กœ ์ฝ๊ฑฐ๋‚˜ ์จ์•ผํ•จ (wb, rb)
๐Ÿ“  ๋ชจ๋“  ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ์Œ

import pickle
data = {
    'a': [1, 2.0, 3, 4 + 6j],
    'b': ("character string", "byte string"),
    'c': {None, True, False}
}
print(type(data))  # <class 'dict>

# 1. ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํŒŒ์ผ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ.
# ์ €์žฅ
with open('./output/data.txt', 'w') as file:
    # file.write(data)  # TypeError: write() argument must be str, not dict
    file.write(str(data))  # write() ๋ฉ”์„œ๋“œ์˜ ์ธ์ž๋Š” ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•จ.

# ์ฝ๊ธฐ
with open('./output/data.txt', 'r') as file:
    data_output = file.read()
print(data_output)  
# {'a': [1, 2.0, 3, (4+6j)], 'b': ('character string', 'byte string'), 
# 'c': {False, True, None}}
print(type(data_output))  #  <class 'str'>

# 2. pickle ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
# ์ €์žฅ
with open('./output/data.my_pickle', 'wb') as file:
    pickle.dump(data, file)

# ์ฝ๊ธฐ
with open('./output/data.my_pickle', 'rb') as file:
    data_output = pickle.load(file)  # ์ฝ์Œ.

print(data_output)  
# {'a': [1, 2.0, 3, (4+6j)], 'b': ('character string', 'byte string'), 
# 'c': {False, True, None}}
print(type(data_output))  # <class 'dict'>
print(data_output.get('a'))  # [1, 2.0, 3, (4+6j)]

 

 

 

 

 

 

[ ๋‚ด์šฉ ์ฐธ๊ณ  : IT ํ•™์› ๊ฐ•์˜ ]

+ Recent posts