3장. 스크립트 실행 컨텍스트
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
"논쟁을 하고 싶어요, 제발"
Python 스크립트는 진공 상태에서 실행되지 않습니다(여러분이 들어보셨을 수도 있지만). 플랫폼과 시작 절차에 따라 Python 프로그램은 프로그램이 시작될 때 운영 체제에 의해 모든 종류의 컨텍스트 정보가 자동으로 프로그램에 전달될 수 있습니다. 예를 들어 스크립트는 다음과 같은 종류의 시스템 수준 입력 및 인터페이스에 액세스할 수 있습니다:
- 현재 작업 디렉터리
os.getcwd는 스크립트가 시작되는 디렉터리에 대한 액세스 권한을 부여하며, 많은 파일 도구가 이 값을 암시적으로 사용합니다.- 명령줄 인수
sys.argv는 프로그램을 시작하는 데 사용되며 스크립트 입력으로 사용되는 명령줄에 입력된 단어에 대한 액세스 권한을 부여합니다.- 셸 변수
os.environ는 둘러싸는 셸(또는 상위 프로그램)에서 할당되어 스크립트에 전달된 이름에 대한 인터페이스( )를 제공합니다.- 표준 스트림
sys.stdin,stdout,stderr은 명령줄 셸 도구의 핵심인 3개의 입력/출력 스트림을 내보내며,print옵션, 2장에서 소개한os.popen호출 및subprocess모듈,io.StringIO클래스 등이 있는 스크립트에서 활용할 수 있습니다.
이러한 도구는 스크립트, 구성 매개변수 등에 대한 입력으로 사용될 수 있습니다. 이 장에서는 이 네 가지 컨텍스트의 도구에 대한 Python 인터페이스와 일반적인 역할을 모두 살펴보겠습니다.
현재 작업 디렉터리
현재 작업 디렉터리(CWD)라는 개념은 일부 스크립트 실행에서 핵심적인 개념으로, 이름에 절대 디렉터리 경로가 없는 한 스크립트가 처리하는 파일이 있는 것으로 가정되는 암시적인 위치입니다. 앞서 살펴본 것처럼 os.getcwd 에서는 스크립트가 CWD 이름을 명시적으로 가져올 수 있고 os.chdir 에서는 스크립트가 새 CWD로 이동할 수 있습니다.
하지만 전체 경로명이 없는 파일명은 CWD에 매핑되며 PYTHONPATH 설정과는 아무런 관련이 없다는 점에 유의하세요. 기술적으로 스크립트는 항상 스크립트 파일이 들어 있는 디렉터리가 아닌 CWD에서 실행됩니다. 반대로 가져오기는 항상 CWD가 아닌 스크립트가 포함된 디렉터리를 먼저 검색합니다(스크립트가 CWD에 있는 경우가 아니라면). 이 구분은 미묘하고 초보자가 헷갈리기 쉬우므로 좀 더 자세히 살펴보겠습니다.
CWD, 파일 및 가져오기 경로
python dir1\dir2\file.py 과 같은 셸 명령줄을 입력하여 Python 스크립트를 실행하면 CWD는 이 명령을 입력할 때 있었던 디렉터리가 아니라 dir1\dir2입니다. 반면에 Python은 스크립트의 홈 디렉터리의 ID를 모듈 검색 경로 앞에 자동으로 추가하여 file.py가 실행되는 위치에 관계없이 항상 dir1\dir2의 다른 파일을 가져올 수 있도록 합니다. 설명을 위해 CWD와 모듈 검색 경로를 ...