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๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๊ฒฐํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ด์! ์ฝ๋ ์ ์ง ๋ณด์ ๊ด์ ์์๋ ์ข์ผ๋ ๊ผญ ์ฌ์ฉํด ๋ณด์๋ ๊ฑธ ์ถ์ฒ๋๋ ค์ !!