๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Programming/Python

[python] ํ˜„์žฌ ํŒŒ์ผ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ์†์‰ฝ๊ฒŒ ์ฐพ๊ธฐ: os.path ๋Œ€์‹  pathlib ์‚ฌ์šฉํ•˜๊ธฐ

by ๋ญ…์ฆค 2024. 7. 30.
๋ฐ˜์‘ํ˜•

 

Python์—์„œ ํ˜„์žฌ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ์ƒ์œ„๋‚˜ ์ƒ์œ„ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ๋ฐœ์ƒํ•˜๋Š”๋ฐ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ผ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ๊ฐ€ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ๋งŽ์€ ๋ถ„๋“ค์ด(๊ณผ๊ฑฐ์˜ ๋‚˜๋„...) os ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, pathlib ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์‰ฝ๊ณ  ์ง๊ด€์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์•„๋ž˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”!

 

1. os ๋ชจ๋“ˆ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

๋จผ์ €, os ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ํŒŒ์ผ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณผ๊ฒŒ์š”.

 

import os

current_dir = os.path.dirname(os.path.abspath(__file__))
print(current_dir)

 

  • ์ด ๋ฐฉ๋ฒ•์€ __file__ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„, os.path.abspath๋ฅผ ํ†ตํ•ด ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ os.path.dirname์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ ‰ํ† ๋ฆฌ ๋ถ€๋ถ„์„ ์ถ”์ถœํ•ด์š”
  • ๋งŒ์•ฝ ์ƒ์œ„ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ์ด ๋˜๋‹ˆ... ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ฒ ์ฃ ? ..

 

2. pathlib ๋ชจ๋“ˆ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

pathlib ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ํ˜„์žฌ ํŒŒ์ผ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์–ด์š”.

from pathlib import Path

current_dir = Path(__file__).parent
print(current_dir)
  • ์ด ๋ฐฉ๋ฒ•์€ ํ•œ ์ค„๋กœ ํ˜„์žฌ ํŒŒ์ผ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Path(__file__) ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„, parent ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ ‰ํ† ๋ฆฌ ๋ถ€๋ถ„์„ ์ถ”์ถœํ•˜๋ฉด ๋ผ์š”.

 

3. ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ ์ฐพ๊ธฐ

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

from pathlib import Path

current_file_path = Path(__file__)
parent_dir = Path(__file__).parents[0]
grandparent_dir = Path(__file__).parents[1]

print("Current Directory:", current_file_path)
print("Parent Directory:", parent_dir)
print("Grandparent Directory:", grandparent_dir)
  • parents ์†์„ฑ์€ ํ˜„์žฌ ๊ฒฝ๋กœ์˜ ์ƒ์œ„ ๊ฒฝ๋กœ๋“ค์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ˜ํ™˜ํ•ด์š”
  • ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋‹จ๊ณ„์˜ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Path(__file__) : ํ˜„์žฌ ํŒŒ์ผ ๊ฒฝ๋กœ
  • Path(__file__).parents[0] : ํ˜„์žฌ ํŒŒ์ผ ์ƒ์œ„ ํด๋”
  • Path(__file__).parents[1] : ํ˜„์žฌ ํŒŒ์ผ ์ƒ์œ„ ์ƒ์œ„ ํด๋”
  • Path(__file__).parents[2] : ํ˜„์žฌ ํŒŒ์ผ ์ƒ์œ„ ์ƒ์œ„ ์ƒ์œ„ ํด๋”

python ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ํŒŒ์ผ์ด๋‚˜ ํด๋” ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฝค ๋งŽ์€๋ฐ์š”. ์ด ๋•Œ ์˜ค๋Š˜ ์•Œ๋ ค๋“œ๋ฆฐ pathlib๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์š”! ์ฝ”๋“œ ์œ ์ง€ ๋ณด์ˆ˜ ๊ด€์ ์—์„œ๋„ ์ข‹์œผ๋‹ˆ ๊ผญ ์‚ฌ์šฉํ•ด ๋ณด์‹œ๋Š” ๊ฑธ ์ถ”์ฒœ๋“œ๋ ค์š” !!

๋ฐ˜์‘ํ˜•