답변:
리디렉션을 수행하는 두 가지 방법이 있습니다. 둘 다 subprocess.Popen
또는에 적용됩니다 subprocess.call
.
키워드 인수를 설정 shell = True
하거나 executable = /path/to/the/shell
명령을 그대로 지정하십시오.
출력을 파일로 리디렉션하기 때문에 키워드 인수를 설정하십시오.
stdout = an_open_writeable_file_object
객체가 output
파일을 가리키는 위치 .
subprocess.Popen
보다 일반적 subprocess.call
입니다.
Popen
차단하지 않으므로 프로세스가 실행되는 동안 프로세스와 상호 작용하거나 Python 프로그램의 다른 작업을 계속할 수 있습니다. 호출 Popen
은 Popen
객체 를 반환 합니다.
call
않는 블록을. Popen
생성자 와 동일한 인수를 모두 지원 하므로 프로세스의 출력, 환경 변수 등을 계속 설정할 수 있지만 스크립트는 프로그램이 완료 될 때까지 대기 call
하고 프로세스의 종료 상태를 나타내는 코드를 반환합니다.
returncode = call(*args, **kwargs)
기본적으로 전화와 동일
returncode = Popen(*args, **kwargs).wait()
call
편리한 기능 일뿐입니다. CPython의 구현은 subprocess.py에 있습니다 .
def call(*popenargs, timeout=None, **kwargs):
"""Run command with arguments. Wait for command to complete or
timeout, then return the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
retcode = call(["ls", "-l"])
"""
with Popen(*popenargs, **kwargs) as p:
try:
return p.wait(timeout=timeout)
except:
p.kill()
p.wait()
raise
보시다시피 주위에 얇은 래퍼 Popen
입니다.
call()
매우 분명한 것 같습니다. 답변에 중점을 둘 것을 알 수 있도록 견적이나 링크를 제공 할 수 있습니까?