안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
오늘 배울 내용은 바로 경로(path)와 디렉토리(directory)입니다!
자세한 내용으로 들어가기 전에 경로와 디렉토리가 각각 무엇이고, 왜 배워야하는지에 대해 간단히 설명드려보겠습니다.
경로와 디렉토리의 개념
일상 생활에서 경로란 어떤 목적지로 향하는 길이라는 의미로 쓰입니다.
컴퓨터에서 목적지란 디렉토리이며, 찾아가는 길을 경로라고 부릅니다. 우리에게 아주 익숙한 폴더라는 것이 디렉토리라 불리는 것입니다.
참고로 경로는 폴더 뿐만 아니라 파일로 향하는 길을 이르기도 합니다.
이때의 경로는 디렉토리 안의 디렉토리 안의 디렉토리 안의 파일 정도가 되겠죠?
실제 모습은 흔히 보셨겠지만 C:\Users\username\Desktop\filename.txt 이런 식입니다.
참고로, Windows os는 디렉토리를 역슬레쉬( \ )로 나타내고, Mac os에서는 슬레쉬( / )로 나타냅니다.
프로그래밍 공부를 하다보면, 한번쯤 겪게 되는 경로 설정의 오류는 '경로가 없거나 경로가 올바르지 않게 입력되었을 때' 생깁니다.
즉, 여기 어떤 파일이 있다고 코드에 잘 적어놓지 않았거나, 그 경로를 따라 갔더니 찾는 파일이 존재하지 않거나 하는 경우입니다.
추후에 프로그램을 자신의 컴퓨터에서 만들어서, 다른 사람에게 배포할 때에도 경로에 대한 고려가 꼭 필요하답니다.
내 컴퓨터에서 실컷 잘돌아가다가도 경로 설정을 신경쓰지 못 하면 다른 컴퓨터에서는 쓸모가 없어지니까요!
절대 경로와 상대 경로
좌표계에도 절대 좌표와 상대 좌표가 있듯이 경로에도 절대 경로와 상대 경로가 있습니다.
절대 경로
절대적인 기준(최초 디렉토리)를 기준으로 경유한 경로를 모두 기입하는 방식입니다.
아까 전 예로 들었던 C:\Users\username\Desktop\filename.txt 가 절대 경로입니다.
상대 경로
상대 경로는 최초 디렉토리가 아닌 특정 경로를 기준으로 다른 경로를 표시하는 방식입니다.
주로 현재 작업하고 있는 폴더를 기준으로 합니다.
상대 경로 사용법
예를 들어 현재 디렉토리에서 제가 example.py라는 파이썬 파일에 코드를 짜고 있다고 생각해봅시다.코드를 짜다보니 하위 디렉토리에 위치하는 sample.xlsx를 참조해야하는 상황이 발생했습니다.
이때 상대 경로의 개념을 이용하면 ./하위 디렉토리/sample.xlsx 라고 써주면 됩니다. 즉, 여기서 사용된 dot(.)은 현재 디렉토리가 어디에 위치하던 현재 파이썬 파일이 위치한 디렉토리의 경로를 뜻합니다. 여기서는 dot(.)의 의미는 '최초 디렉토리/상위 디렉토리/현재 디렉토리'가 되겠죠!
추가적으로 설명드리면, dot 두 개(..)는 현재 디렉토리의 상위 디렉토리를 뜻합니다.
만약 example.py에서 sample2.xlsx를 상대 경로를 이용해서 참조하고 싶다면 이렇게 하시면 됩니다.
'./../현재 디렉토리와 같은 디렉토리에 존재/sample2.xlsx'
그러니깐, 현재 경로(.)를 기준으로 상위 디렉토리(/..)로 올라간 후, '현재 디렉토리와 같은 디렉토리에 존재'라 이름 붙인 디렉토리로 내려가서 sample2.xlsx를 참조하는 것입니다.
상대 경로 사용하는 이유
그렇다면 절대 경로도 있는데 왜 굳이 상대 경로는 왜 사용하는걸까요?
예를들어 filename.txt의 경로가 자주 바뀌거나 최초 디렉토리가 서로 다른 Windows와 Mac OS 모두에서 작동해야 하는 프로그램을 만드는 경우엔 그때 그때 경로를 다시 작성하거나 OS 별로 따로 관리해야 하는 것은 너무 비효율적인 일입니다.
그래서 이럴 때는 절대 경로가 아닌 상대 경로를 이용해 주어야 합니다.
절대 경로 가져오는 꿀팁
window는 cmd, mac은 terminal에 경로가 필요한 파일이나 폴더를 드래그해서 가져다 놓으시면 됩니다.
만약 vscode와 같은 ide를 사용하시면 그 곳의 터미널 창에다가 끌어다 놓으셔도 되니깐 유용하게 사용하시면 좋겠습니다.
조만간 파이썬에서 경로와 디렉토리를 다루는 os 모듈에 대해서도 포스팅 하도록 하겠습니다.
오늘도 코딩유치원을 찾아와 주셔서 감사합니다.
'파이썬 기초 > 기초 문법' 카테고리의 다른 글
[python 기초] import OO와 from OO import*의 차이 (4) | 2021.05.24 |
---|---|
[코딩유치원] 파이썬 기초 문법 12편_모듈 사용법 (6) | 2021.03.19 |
[코딩유치원] 파이썬 기초 문법 11편_함수 사용법 (0) | 2021.03.18 |
[코딩유치원] 파이썬 기초 문법 10편_함수, 모듈, 패키지 개념 총정리 (4) | 2021.03.17 |
[코딩유치원] 파이썬 기초 문법 9편_제어문(for문) (0) | 2021.03.16 |