๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Language/Python

[Pytohon]ํŒŒ์ด์ฌ ํŒŒ์ผ ์ž…๋ ฅ ์ถœ๋ ฅ: ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ์˜ ๊ธฐ์ดˆ

by YJ Dev 2024. 4. 23.
728x90
๋ฐ˜์‘ํ˜•
SMALL

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ณ  ์ฝ์–ด์˜ค๋Š” ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŒŒ์ผ ์ž…์ถœ๋ ฅ์€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ ๊ผฝํž™๋‹ˆ๋‹ค. python์—์„œ๋Š” ํ‘œ์ค€ ํ•จ์ˆ˜์—๋Š” ํŒŒ์ผ๊ณผ ๊ด€๋ จ๋œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ ํ•จ์ˆ˜๊ฐ€ ์ œ๊ณต๋˜๋ฏ€๋กœ, ์ด๋ฅผ ํ†ตํ•ด ํŒŒ์ผ ์ž…์ถœ๋ ฅ์„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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


1. ํŒŒ์ผ ์ƒ์„ฑ๊ณผ ๋ฌธ์ž์—ด ์“ฐ๊ธฐ๐Ÿ‘ฉ‍๐Ÿ’ป

๋จผ์ € ํŒŒ์ผ ์ž…์ถœ๋ ฅ์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ•์„ ํ†ตํ•ด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฌธ์ž์—ด์„ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ํ˜•์‹ (๊ธฐ๋ณธ ๋ฌธ๋ฒ•)
    1. ํŒŒ์ผ ์—ด๊ธฐโ–ถ ํŒŒ์ผ๊ฐ์ฒด๋ช… = open('ํŒŒ์ผ ์ด๋ฆ„', 'wt')
    2. ํŒŒ์ผ์— ์“ฐ๊ธฐ โ–ถ ํŒŒ์ผ๊ฐ์ฒด๋ช….write('๋ฌธ์ž์—ด')
      โ–ถ
      ํŒŒ์ผ๊ฐ์ฒด๋ช….write(str(์ˆซ์ž))
    3. ํŒŒ์ผ ๋‹ซ๊ธฐ โ–ถ ํŒŒ์ผ๊ฐ์ฒด๋ช….close()
  • ํ˜•์‹ (๋ฆฌ์ŠคํŠธ ๋ฌธ๋ฒ•)
      1. ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ โ–ถ ๋ฆฌ์ŠคํŠธ๋ช… = [๊ฐ’1, ๊ฐ’2, ๊ฐ’3]
      2. ํŒŒ์ผ ์—ด๊ธฐโ–ถ ํŒŒ์ผ๊ฐ์ฒด๋ช…= open('ํŒŒ์ผ ์ด๋ฆ„', 'wt')
      3. ํŒŒ์ผ์— ์“ฐ๊ธฐ โ–ถ ํŒŒ์ผ๊ฐ์ฒด๋ช….writelines('๋ฌธ์ž์—ด')
      4. ํŒŒ์ผ ๋‹ซ๊ธฐ โ–ถ ํŒŒ์ผ๊ฐ์ฒด๋ช….close()
  • ํŒŒ์ผ์„ ์—ด๊ธฐ ์œ„ํ•ด์„œ๋Š” open() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. open() ํ•จ์ˆ˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์— ํŒŒ์ผ์˜ ๊ฒฝ๋กœ, ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” ์—ด๊ณ ์ž ํ•˜๋Š” ๋ชฉ์ (๋ชจ๋“œ)์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถ„๋ฅ˜ ์ข…๋ฅ˜ ์˜๋ฏธ ์„ค๋ช… ํŒŒ์ผ์ด ์—†์„ ๋•Œ ํŒŒ์ผ์ด ์žˆ์„ ๋•Œ
    ์ž…๋ ฅ r read ์ฝ๊ธฐ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์ฝ๊ธฐ
    ์ถœ๋ ฅ w write ์“ฐ๊ธฐ ์ƒˆ๋กœ ์ƒ์„ฑ ์ƒˆ๋กœ ์ƒ์„ฑ
    a append ์ถ”๊ฐ€ ์ƒˆ๋กœ ์ƒ์„ฑ ์ถ”๊ฐ€
    x exclusive ๋ฐฐํƒ€์  ์ถ”๊ฐ€ ์ƒˆ๋กœ ์ƒ์„ฑ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
  • ํŒŒ์ผ์„ ์—ด์—ˆ๋‹ค๋ฉด, write() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์— ๋‚ด์šฉ์„ ์”๋‹ˆ๋‹ค. write() ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ ์“ฐ๋ ค๋ฉด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์ž‘์—…์ด ๋๋‚˜๋ฉด ํ•ญ์ƒ ํŒŒ์ผ์„ ๋‹ซ์•„์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ๋‹ซ์ง€ ์•Š์œผ๋ฉด ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‚ญ๋น„๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด๋‹น ํŒŒ์ผ์„ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ๋‹ซ๊ธฐ ์œ„ํ•ด์„œ๋Š” close() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
# ํŒŒ์ผ์„ ์“ฐ๊ธฐ ๋ชจ๋“œ('w')๋กœ ์—ด์–ด์„œ 'Hello.txt' ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
file = open('Hello.txt','w') 

# ํŒŒ์ผ์— ๋ฌธ์ž์—ด 'Hello, world!'๋ฅผ ์”๋‹ˆ๋‹ค.
file.write('Hello, world!')

# ํŒŒ์ผ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.
file.close()
# for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์— ๋ฌธ์ž์—ด์„ ์“ฐ๊ธฐ ์œ„ํ•ด ํŒŒ์ผ์„ ์“ฐ๊ธฐ ๋ชจ๋“œ('w')๋กœ ์—ฝ๋‹ˆ๋‹ค.
file = open('Hello.txt', 'w')

# for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ 1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ๊ฐ ์ค„์— ์“ฐ๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
for i in range(1, 11):
    data = f'{i}๋ฒˆ์งธ ์ค„์ž…๋‹ˆ๋‹ค.\n' # ๋ฌธ์ž์—ด์— ๊ฐœํ–‰ ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ค„๋ฐ”๊ฟˆํ•ฉ๋‹ˆ๋‹ค.
    file.write(data) # ํŒŒ์ผ์— ๋ฌธ์ž์—ด์„ ์”๋‹ˆ๋‹ค. write ํ•จ์ˆ˜๋Š” ์—”ํ„ฐ ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฏ€๋กœ ๊ฐœํ–‰ ๋ฌธ์ž๋ฅผ ์ง์ ‘ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# ํŒŒ์ผ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.
file.close()


ํŒŒ์ผ์„ ์—ด ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ์—๋Š” ์ƒ๋Œ€ ๊ฒฝ๋กœ์™€ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ๋Œ€ ๊ฒฝ๋กœ๋Š” ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋ฉฐ ์ด๋•Œ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐํ˜ธ๋Š” '.' ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์„ ์—ด ๋•Œ๋Š” './ํ•˜์œ„๋””๋ ‰ํ„ฐ๋ฆฌ/ํŒŒ์ผ์ด๋ฆ„'๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—…์„ ํ•˜๋Š” ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ ˆ๋Œ€ ๊ฒฝ๋กœ๋Š” ํŒŒ์ผ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฆ‰, ํŒŒ์ผ์ด ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ตœ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ๋ชจ๋‘ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋‘ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ์œ„์น˜์—์„œ๋„ ํ•ญ์ƒ ๋™์ผํ•œ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ' C:\Users\Username\Documents\ํŒŒ์ผ์ด๋ฆ„'๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ์ด ์œ„์น˜ํ•œ ๊ณณ์ด ์–ด๋””๋“  ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฒฝ๋กœ๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋ชจ๋‘ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ƒ๋Œ€ ๊ฒฝ๋กœ์™€ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋Š” ํŒŒ์ผ์„ ์—ด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.


2. ํŒŒ์ผ์—์„œ ๋ฌธ์ž์—ด ์ฝ๊ธฐ๐Ÿ“š

ํŒŒ์ผ์—์„œ ๋ฌธ์ž์—ด์„ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ํŒŒ์ผ์„ ์—ด๊ณ , ํŒŒ์ผ์—์„œ ์ฝ์€ ๋‚ด์šฉ์„ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ด์ œ ํŒŒ์ผ์—์„œ ๋ฌธ์ž์—ด์„ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ํŒŒ์ผ๊ฐ์ฒด๋ช… = open('ํŒŒ์ผ ์ด๋ฆ„', 'r')
  2. ๋ณ€์ˆ˜๋ช… = ํŒŒ์ผ๊ฐ์ฒด๋ช….read()
  3. ํŒŒ์ผ๊ฐ์ฒด๋ช….close()
  4. print(๋ณ€์ˆ˜๋ช…) # ํ™”๋ฉด์„ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
# ํŒŒ์ผ์„ ์ฝ๊ธฐ ๋ชจ๋“œ('r')๋กœ ์—ฝ๋‹ˆ๋‹ค.
file = open('Hello.txt','r') 

# ํŒŒ์ผ์—์„œ ์ฝ์„ ๋‚ด์šฉ์„ temp ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
temp = file.read() 

# ํŒŒ์ผ์„ ๋‹ซ๊ณ  ์ถœ๋ ฅํ•ด ๋ด…๋‹ˆ๋‹ค.
file.close() 
print(temp)

3. ํŒŒ์ผ์—์„œ ์—ฌ๋Ÿฌ ์ค„์„ ๋ฆฌ์ŠคํŠธ๋กœ ์ฝ๊ธฐ๐ŸŒˆ

ํŒŒ์ผ์„ ์ฝ์–ด์™€์„œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ข…์ข… ํŒŒ์ผ์˜ ๊ฐ ์ค„์„ ๋ฆฌ์ŠคํŠธ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํŒŒ์ด์ฌ์—์„œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ํŒŒ์ผ์„ ์—ด๊ณ  ๊ฐ ์ค„์„ ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ํ•  ์ผ์€ ํŒŒ์ผ์„ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. open() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์ฝ๊ธฐ ๋ชจ๋“œ(r)๋กœ ์—ฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„, readlines() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์˜ ๊ฐ ์ค„์„ ์ฝ์–ด์™€ ๋ฆฌ์ŠคํŠธ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ฝ์–ด ์˜จ ๊ฐ ์ค„์€ ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋กœ ์ €์žฅ๋˜์–ด, ๋‚˜์ค‘์— ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํŒŒ์ผ ์—ด๊ธฐ โ–ถ ํŒŒ์ผ๊ฐ์ฒด๋ช… = open('ํŒŒ์ผ ์ด๋ฆ„', 'rt')
  2. ํŒŒ์ผ ์ฝ๊ธฐ โ–ถ ๋ฆฌ์ŠคํŠธ๋ช… = ํŒŒ์ผ๊ฐ์ฒด๋ช….readlines()
  3. ํŒŒ์ผ ๋‹ซ๊ธฐ โ–ถ ํŒŒ์ผ๊ฐ์ฒด๋ช….close()
# 'Hello.txt' ํŒŒ์ผ์„ ์ฝ๊ธฐ ๋ชจ๋“œ('r')๋กœ ์—ฝ๋‹ˆ๋‹ค.
file = open('Hello.txt','r')

# ํŒŒ์ผ์—์„œ ์ฝ์€ ๋‚ด์šฉ์„ ๋ฆฌ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
lines = file.readlines()

# ํŒŒ์ผ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.
file.close()

# ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ๋œ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print(lines)

# ๋ฆฌ์ŠคํŠธ์—์„œ ์ธ๋ฑ์Šค๊ฐ€ 3์ธ ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print(lines[3])

# ํŒŒ์ผ์—์„œ ์ฝ์€ ๊ฐ ์ค„์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
for i in lines:
    print(i, end='')

4. with ํ‚ค์›Œ๋“œ ์ด์šฉํ•œ ํŒŒ์ผ ์ž…์ถœ๋ ฅ๐Ÿ‘จ‍โค๏ธ‍๐Ÿ‘จ

ํŒŒ์ผ์„ ๋‹ค๋ฃฐ ๋•Œ with ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์—ด๊ณ  ์‚ฌ์šฉํ•œ ํ›„์— ์ž๋™์œผ๋กœ ๋‹ซ์•„์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์•ˆ์ „ํ•ด์ง‘๋‹ˆ๋‹ค.

with open('ํŒŒ์ผ ์ด๋ฆ„', '๋ชจ๋“œ') as ํŒŒ์ผ๊ฐ์ฒด๋ช…:
์ˆ˜ํ–‰ํ•  ์ฝ”๋“œ

# ๋ฆฌ์ŠคํŠธ๋ฅผ ํŒŒ์ผ์— ์“ฐ๊ธฐ ์˜ˆ์ œ
# ๋ฆฌ์ŠคํŠธ๋ฅผ ํŒŒ์ผ์— ์“ธ ๋•Œ๋Š” ํŒŒ์ผ์„ ์“ฐ๊ธฐ ๋ชจ๋“œ('w')๋กœ ์—ด๊ณ , ํŒŒ์ผ ๊ฐ์ฒด์˜ writelines() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

li = ['hell0~\n', 'world!\n', 'hi\n', 'python!!\n']

# 'file.txt' ํŒŒ์ผ์„ ์“ฐ๊ธฐ ๋ชจ๋“œ('w')๋กœ ์—ด๊ณ , ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜ f์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
with open('file.txt','w') as f:
    f.writelines(li)  # ๋ฆฌ์ŠคํŠธ๋ฅผ ํŒŒ์ผ์— ์”๋‹ˆ๋‹ค.
    f.write('Python: Code Less, Create More\n')  # ์ถ”๊ฐ€์ ์ธ ๋ฌธ์ž์—ด์„ ํŒŒ์ผ์— ์”๋‹ˆ๋‹ค.
    f.write('Simple yet Powerful Programming Language\n')  # ์ถ”๊ฐ€์ ์ธ ๋ฌธ์ž์—ด์„ ํŒŒ์ผ์— ์”๋‹ˆ๋‹ค.

# 'file.txt' ํŒŒ์ผ์„ ์ฝ๊ธฐ ๋ชจ๋“œ('r')๋กœ ์—ด๊ณ , ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜ f์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
with open('file.txt','r') as f:
    temp = f.read()  # ํŒŒ์ผ์— ๋‚ด์šฉ์„ ์ฝ์–ด์™€ temp ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

# ํŒŒ์ผ์—์„œ ์ฝ์€ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print(temp)

5. ํŒŒ์ผ ์ž…์ถœ๋ ฅ ํ™œ์šฉ๐ŸŽก

ํŒŒ์ผ ์ž…์ถœ๋ ฅ์„ ํ™œ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ์—์„œ ํŒŒ์ผ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

buffer_size = 1024  # ํ•œ ๋ฒˆ์— ์ฝ์–ด๋“ค์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ

# ์›๋ณธ ํŒŒ์ผ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ('rb')๋กœ ์—ฝ๋‹ˆ๋‹ค.
with open('original_file.txt', 'rb') as source:
    # ๋ณต์‚ฌ๋ณธ ํŒŒ์ผ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ('wb')๋กœ ์—ฝ๋‹ˆ๋‹ค.
    with open('copied_file.txt', 'wb') as copy:
        while True:
            buffer = source.read(buffer_size)  # ๋ฒ„ํผ ํฌ๊ธฐ๋งŒํผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.
            if not buffer:  # ์ฝ์–ด๋“ค์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
                break
            copy.write(buffer)  # ์ฝ์–ด๋“ค์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌ๋ณธ ํŒŒ์ผ์— ์”๋‹ˆ๋‹ค.

print('File copied successfully!')


ํŒŒ์ผ ์ž…์ถœ๋ ฅ ํ™œ์šฉ๋ฒ•์„ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ด…์‹œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์˜ˆ์ œ๋Š” ์˜ค๋Š˜์˜ ์Šค์ผ€์ค„์„ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ฉฐ, ๋‘ ๋ฒˆ์งธ ์˜ˆ์ œ๋Š” "์•„๊ธฐ์ƒ์–ด" ๋…ธ๋ž˜์˜ ๊ฐ€์‚ฌ๊ฐ€ ์ ํžŒ ํŒŒ์ผ์„ ์ฝ์–ด์„œ ํŠน์ • ๋ฌธ์ž์—ด์ด ๋ช‡ ๋ฒˆ ๋“ฑ์žฅํ•˜๋Š”์ง€๋ฅผ ์„ธ๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

# ์˜ˆ์ œ: "์•„๊ธฐ์ƒ์–ด" ๋…ธ๋ž˜์˜ ๊ฐ€์‚ฌ๊ฐ€ ์ ํžŒ ํŒŒ์ผ์„ ์ฝ์–ด์„œ '๋šœ๋ฃจ๋ฃจ๋ฃจ๋ฃจ'์ด๋ž€ ๊ธ€์ž๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ ์„ธ์•„๋ ค ๋ณด์ž.

file = open('์•„๊ธฐ์ƒ์–ด.txt','r') # ํŒŒ์ผ ์—ด๊ธฐ(์ฝ๊ธฐ๋ชจ๋“œ)

line_list = file.readlines() # ์ „์ฒด ๊ธ€์„ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ

count = 0 # ๋šœ๋ฃจ๋ฃจ๋ฃจ๋ฃจ์˜ ๊ฐœ์ˆ˜

for line in line_list: # ์ „์ฒด ๊ธ€ ์ค‘ ํ•˜๋‚˜์˜ ๋ผ์ธ์„ ๋ฌธ์ž์—ด line ๋ณ€์ˆ˜์— ์ €์žฅ
    for ch in line: # line์— ๋‹ด๊ธด ๋ชจ๋‘” ๋ฌธ์ž๋“ค์„ ํ•˜๋‚˜์”ฉ ch๋ณ€์ˆ˜์— ์ €์žฅ
        if ch == '๋šœ๋ฃจ๋ฃจ๋ฃจ๋ฃจ': # ๋šœ๋ฃจ๋ฃจ๋ฃจ๋ฃจ๊ณผ ๊ฐ™๋‹ค๋ฉด
            count += 1 # ๊ฐœ์ˆ˜ ์ฆ๊ฐ€

file.close() # ํŒŒ์ผ ๋‹ซ๊ธฐ
print('๋šœ๋ฃจ๋ฃจ๋ฃจ๋ฃจ์€ ์ „์ฒด {}๋ฒˆ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.'.format(count))
# ์˜ˆ์ œ: "์•„๊ธฐ์ƒ์–ด" ๋…ธ๋ž˜์˜ ๊ฐ€์‚ฌ๊ฐ€ ์ ํžŒ ํŒŒ์ผ์„ ์ฝ์–ด์„œ '๋šœ๋ฃจ๋ฃจ๋ฃจ๋ฃจ'์ด๋ž€ ๊ธ€์ž๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ ์„ธ์•„๋ ค ๋ณด์ž.

file = open('์•„๊ธฐ์ƒ์–ด.txt','r') # ํŒŒ์ผ ์—ด๊ธฐ(์ฝ๊ธฐ๋ชจ๋“œ)

line_list = file.readlines() # ์ „์ฒด ๊ธ€์„ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ

count = 0 # ๋šœ๋ฃจ๋ฃจ๋ฃจ๋ฃจ์˜ ๊ฐœ์ˆ˜

for line in line_list: # ์ „์ฒด ๊ธ€ ์ค‘ ํ•˜๋‚˜์˜ ๋ผ์ธ์„ ๋ฌธ์ž์—ด line ๋ณ€์ˆ˜์— ์ €์žฅ
    for ch in line: # line์— ๋‹ด๊ธด ๋ชจ๋‘” ๋ฌธ์ž๋“ค์„ ํ•˜๋‚˜์”ฉ ch๋ณ€์ˆ˜์— ์ €์žฅ
        if ch == '๋šœ๋ฃจ๋ฃจ๋ฃจ๋ฃจ': # ๋šœ๋ฃจ๋ฃจ๋ฃจ๋ฃจ๊ณผ ๊ฐ™๋‹ค๋ฉด
            count += 1 # ๊ฐœ์ˆ˜ ์ฆ๊ฐ€

file.close() # ํŒŒ์ผ ๋‹ซ๊ธฐ
print('๋šœ๋ฃจ๋ฃจ๋ฃจ๋ฃจ์€ ์ „์ฒด {}๋ฒˆ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.'.format(count))

6. ํ•ต์‹ฌ ๋‚ด์šฉ๐Ÿ‘€

ํŒŒ์ผ ์ž…์ถœ๋ ฅ ๋ชจ๋“œ
ํŒŒ์ผ ์ƒ์„ฑ, ์“ฐ๊ธฐ
ํŒŒ์ผ ์ฝ๊ธฐ

728x90
๋ฐ˜์‘ํ˜•
LIST