[Python] Absolute path와 relative path의 차이

손종일·2020년 8월 21일
1

Python

목록 보기
10/13
post-thumbnail

경로 (path)

문서에서 다른 문서로 연결(link)하거나 문서 내에 그림 또는 음악 등 각종 파일을 넣을 때, 문서에는 다른 문서로 연결할 때 다른 문서의 위치나 그림을 넣을 때 사용되는 그림의 위치를 브라우저에게 알려준다.

└── caculator
│        ├── __init__.py
│        ├── add_and_multiply.py
│        ├── multiplication.py
└── my_app.py
│   │  ├── main.py
│   │  ├── package1
│   │  ├── module1.py
│   │  └── module2.py
│   └── package2
│       ├── __init__.py
│       ├── module3.py
│       ├── module4.py
│       └── subpackage1
│                └── module5
└── main.py

절대 경로 (Absolute)

절대 경로는 기존 작업 디렉토리에 관계없이 파일 또는 폴더의 위치를 ..으로 설명하는 경로입니다. 사실 그것은 루트 디렉토리에 상대적입니다. 파일 또는 디렉토리의 전체 위치를 포함하므로 이름입니다. 또한 절대 경로 이름 또는 전체 경로라고하며 항상 동일한 위치, 즉 루트 디렉토리로 시작합니다. 절대 경로에는 절대 URL에 지정된 자원을 찾는 데 필요한 모든 정보가 포함됩니다. 다른 도메인에있는 웹 사이트에 액세스하려면 도메인에서 절대 경로를 사용해야합니다.

from caculator import add_and_multiply
from caculator import multiplication
from package2.subpackage1.module5 import func1 //module5을 func1으로 import

경로들의 시작점이 전부 "my_app" 프로젝트의 가장 최상위 디렉토리에서 시작하는것을 볼 수 있습니다. subpackage1의 module5 모듈의 func1 함수를 import 하기 위해서는 다음 경로를 거치게 됩니다.

my_app/package2/subpackage1/module5.py

my_app.package2.subpackage1.module5.py
이미 my_app 프로젝트 안에 있으므로 my_app 은 생략됩니다. 해당 경로는 다음처럼 표기합니다. (Python은 .을 사용하여 위치를 표현한다.)

package2.subpackage1.module5.py

상대 경로 (relative path)

상대 경로는 현재 작업 디렉토리를 기준으로 파일 또는 폴더의 위치를 ​​설명하는 경로입니다. 문서가 서로의 관계를 변경하지 않는 특정 웹 사이트 섹션은 동일한 도메인 내에있는 웹 사이트를 참조하는 데 가장 좋습니다. 절대 경로와 달리 상대 경로에는 단일 웹 사이트 내의 기존 문서에 대한 완전한 정보 만 포함되므로 완전한 절대 경로를 제공 할 필요가 없습니다. 간단히 말해 상대 경로는 현재 웹 페이지의 위치에 상대적인 경로를 나타냅니다. 즉, 최상단 디렉토리를 기준으로 경로를 잡는게 아니라 import 하는 위치를 기준으로 경로를 정의합니다.

# package2/module3.py
from .subpackage1.module5 import func2 //module5을 func2으로 import
from ..module3 import func3 //module3을 func3으로 import

if __name__ == "__main__" 은 어떻게 사용되나?

__name__이라는 변수의 값이 __main__이라면 아래의 코드를 실행하라.'라는 뜻이다.
 이중에서 __name__은 현재 모듈의 이름을 담고있는 내장 변수이다.
**, 이 변수는 직접 실행된 모듈의 경우 __main__이라는 값을 가지게 되며, 
직접 실행되지 않은 import된 모듈은 모듈의 이름(파일명)을 가지게 된다.**

파이썬에서는 C언어 또는 자바와 같은 프로그래밍 언어에서는 항상 main()이라는 함수를 시작으로 프로그램을 실행시킨다. 하지만 파이썬은 첫째, 들여쓰기를 통하여 코드 실행 레벨을 결정한다. 둘째, main이 존재하지 않는다.

if name=="main"이라는 조건문을 넣어주고 그 아래는 직접 실행시켰을 때만 실행되길 원하는 코드들을 넣어주는 것으로 생각하면 쉬울 것이다.

profile
Allday

0개의 댓글