os.path.join

Younghwan Cha·2022년 11월 13일
0

os.path.join 을 사용하는 데 예기치 못한 결괏값이 반환되었다.

import os

result = os.path.join('/data_dir', '/images', '*.{}'.format('jpg')

>> /images/*.jpg

...???
분명 /data_dir/images/*.jpg 로 조인 해달라 하지 않았는가!!!
찾아보니 당연하게도 나의 HUMAN ERROR 였다.

이를 잘 설명한 예시를 한번 보자

import os

print(os.path.join("dirA", "dirB", "/dirC"))

print(os.path.join("/dirA", "/dirB", "dirC"))

print(os.path.join("/dirA", "dirB", "dirC"))

result

/dirC
/dirB/dirC
/dirA/dirB/dirC

join() 의 경우, 디렉토리에 구분 문자가 있으면 그것을 root로 보는 성질이 있다고 한다.
이를 방지하려면 이를 염두해두고 사용하거나, 리스트에 넣어서 사용하자

import os

path = ['data_dir', 'images', '*.{}'.format('jpg')]
result = os.path.join(*path)

>> data_dir/images/*.jpg

[ref]
https://engineer-mole.tistory.com/188

profile
개발 기록

0개의 댓글