팝업을 위한 작업 디렉토리를 지정하려면 어떻게 해야 합니까?
Python의 명령어 실행 디렉토리를 지정할 수 있는 방법이 있습니까?subprocess.Popen()
?
예를 들어 다음과 같습니다.
Popen('c:\mytool\tool.exe', workingdir='d:\test\local')
Python 스크립트는 다음 위치에 있습니다.C:\programs\python
실행 가능C:\mytool\tool.exe
전화번호부에D:\test\local
?
하위 프로세스의 작업 디렉토리를 설정하려면 어떻게 해야 합니까?
subprocess.Popen
Current Working Directory를 설정하기 위해 인수를 사용합니다.백슬래시를 이스케이프하는 것도 좋습니다)'d:\\test\\local'
), 또는 를 사용합니다.r'd:\test\local'
Python은 백슬래시를 이스케이프 시퀀스로 해석하지 않습니다.당신이 쓰는 방식으로는\t
부품이 로 변환됩니다.
새로운 행은 다음과 같습니다.
subprocess.Popen(r'c:\mytool\tool.exe', cwd=r'd:\test\local')
Python 스크립트 경로를 cwd로 사용하려면import os
다음 명령을 사용하여 cwd를 정의합니다.
os.path.dirname(os.path.realpath(__file__))
다른 방법은 간단히 이것을 하는 것입니다.
cwd = os.getcwd()
os.chdir('c:\some\directory')
subprocess.Popen('tool.exe')
os.chdir(cwd)
이 솔루션은 툴의 위치가 다음과 같은 경우 등 상대적인 경로에 의존하고 싶은 경우에 사용할 수 있습니다.c:\some\directory\tool.exe
.cwd
키워드 인수Popen
허락하지 않을 거야스크립트/툴에 따라서는, 기동시에 지정된 디렉토리에 있는 것에 의존할 수 있습니다.이 코드의 노이즈를 경감하기 위해서, 디렉토리 변경에 관한 로직을 「비즈니스 로직」으로부터 떼어내, 데코레이터를 사용할 수 있습니다.
def invoke_at(path: str):
def parameterized(func):
def wrapper(*args, **kwargs):
cwd = os.getcwd()
os.chdir(path)
try:
ret = func(*args, **kwargs)
finally:
os.chdir(cwd)
return ret
return wrapper
return parameterized
그런 다음 이러한 장식기를 다음과 같은 방법으로 사용할 수 있습니다.
@invoke_at(r'c:\some\directory')
def start_the_tool():
subprocess.Popen('tool.exe')
언급URL : https://stackoverflow.com/questions/1685157/how-can-i-specify-working-directory-for-popen
'programing' 카테고리의 다른 글
스프링 부트 프로파일 사용 방법 (0) | 2022.09.25 |
---|---|
웅변 -> first() if -> exists() (0) | 2022.09.22 |
Visual Studio Code에서 생성된 vue-cli 3 앱 디버깅 (0) | 2022.09.22 |
PHP5에 오류가 있습니다.동적 라이브러리를 로드할 수 없습니다. (0) | 2022.09.22 |
PHP & mySQL: 2038년 버그: 뭐죠?어떻게 해결할까요? (0) | 2022.09.22 |