파이썬에서 홈 디렉토리 경로 처리하기
Python
//
2024년 05월 31일 작성
//
2024년 12월 26일 업데이트
파이썬에서 경로(path)로 입력받은 문자열 중 ~
(틸트)로 시작하는 경우 제대로 처리하지 못 하는 경우가 있는데 이럴 때 해결 방법을 간단히 정리해 보자.
굳이 정리하자면, POSIX 운영체제의 특징...이라고는 할 수는 없겠지만, 적어도 유닉스나 리눅스, macOS 등의 POSIX 호환 운영체제에서 사용되는 셸들은 ~
을 '홈 디렉터리(Home Directory)'라는 의미로 사용한다. 예를 들어 아래의 표현을 보자.
~/.zshrc
위 경로는 운영체제 등에 따라 /home/username/.zshrc
혹은 /Users/username/.zshrc
등으로 내부적으로 변경되어 동작한다. 즉 ~
을 홈 디렉토리로 인식한다는 말이다.
하지만 파이썬도 그렇고 Emacs Lisp의 경우도 그렇고 다양한 OS에 호환성이 있는 언어들의 경우 ~
를 홈 디렉터리로 자동으로 바꿔주지 않는다. 당연하겠지만 이를 홈 디렉터리로 인식해 주는 기능은 셸에서 자체적으로 제공하는 것이기 때문이다.
expanduser - 경로에서 홈 디렉토리 확장하기
이럴 때를 위해 파이썬에서는 os.path.expanduser
함수를 이용할 수 있다.
>>> import os
>>> os.path.expanduser("~/.zshrc")
'/Users/seorenn/.zshrc'
위의 경우는 macOS에서 구동 중인 REPL에서 사용한 예제다. 보다시피 ~
가 사용자의 홈 디렉터리로 잘 변경되는 것을 볼 수 있다. Expand User라는 이름에 걸맡게 축약된 ~
기호를 홈 디렉터리로 확장시켜 준다.
쓸 데 없이 글이 길어진 것 같다. 어쨌든 셸 스크립팅 목적이라면 자주 사용하게 될 함수 같다.