파이썬에서 데이터를 읽고 쓸때에는 항상 절대경로만 사용해서 몰랐었다.
이번에는 상대경로를 쓰고 싶어서 상대경로로 써보는데 이게 뭔 일인지...
왜 자꾸 없는걸 있다고 하고 있는걸 없다고 하는거지? 했다.
결론부터 말하자면 현재 헷갈릴 땐 일단
os.getcwd()
os.listdir()
를 써서 현재 위치나 현재 위치의 하위 폴더들을 확인해보자.
디렉토리의 상태는 다음과 같다.
PATH_TEST/Folder1/Folder1-1/file1-1.py
PATH_TEST/Folder1/Folder1-2/file1-2.txt
가 있다.
import os
if os.path.exists("../Foler1-2/file1-2.txt"):
print("file1-2.txt가 존재함")
else:
print("file1-2.txt가 존재하지 않음")
다음과 같이 Folder1/Folder1-1/file1-1.py
에서 Folder1/Folder1-2/file1-2.txt
를 찾으려고 한다.
난 처음에 file1-1.py가 Foler1-1의 하위(이자 Folder1-1-1과 같은 뎁스에 있는 상태) 이므로
상위 폴더에 한번 올라간 다음 Folder1-2로 들어가 그 하위의 file1-2.txt를 찾아야 한다고 생각했다.
(그래서 ../Folder1-2/file1-2.txt 가 된 것)
근데 웬일... 자꾸 존재하지 않는다고 뜬다..🤣
무엇 때문일까 검색해본 결과 현재 위치./
는 파일의 위치(뎁스)가 아니라 파일을 실행한 프로젝트의 폴더 기준
이 된다.
(실행된 파이썬 파일이 위치한 뎁스나 실행한 파이썬 파일이 위치한 폴더도 아닌 파일을 실행한 프로젝트의 기준!)
다음과 같이 file1-1.py를 실행해서 디버그 콘솔에 찍어보았다.
os.getcwd()를 한 결과, 현재 위치는 file1-1.py가 위치한 Folder1-1이 아닌
해당 파일을의 프로젝트 폴더인 path_test로 되어있는 것을 확인할 수 있었다.
이러니까 내가 자꾸 파일을 저장해도 이상한 곳에 생기고 삭제를 했는데도 존재한다고 뜨지...
20분간 노트북에 귀신이 들렸나 했다.😂
다만 쥬피터노트북에서는 어떤지 테스트해보지 않았음.
동일한진 모르겠으나.. 환경마다 다르다면... 아니면 들어도 모르겠고 상대경로는 자꾸 헷갈린다면...
os.getcwd()
os.listdir()
일단 이걸로 확인해보시라.
이걸로도 모르겠고 헷갈린다면 그냥 절대경로를 쓰시라! 😃
'파이썬 문법' 카테고리의 다른 글
[python] 에러 발생 시 로그로 남길 때는 꼬옥 traceback을 써주기 (1) | 2024.01.05 |
---|---|
파이썬 딕셔너리는 추가 순서를 보장한다. (0) | 2023.11.08 |
파이썬에서 input() 대신 사용할 것 (0) | 2023.03.03 |
[번역] 파이썬에서 구조분해 할당을 하는 5가지 방법 (0) | 2022.12.25 |
Hash Table (0) | 2022.10.09 |