찾다
백엔드 개발파이썬 튜토리얼Python의 하위 프로세스 클래스 및 상수에 대한 자세한 소개

이 글은 파이썬의 하위 프로세스 클래스와 상수에 대해 자세히 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

Constant

subprocess.DEVNULL: stdin, stdout, stderr 매개변수에 전달할 수 있는 특수 값. 즉, 특수 값을 사용하여 입력 및 출력이 리디렉션됨을 의미합니다. file os.devnull#🎜🎜 #

subprocess.PIPE: stdin, stdout, stderr 매개변수에 전달할 수 있는 특수 값. 이는 파이프를 사용하여 입력 및 출력을 리디렉션하는 것을 의미합니다.

subprocess .STDOUT: 표준 오류를 표준 출력으로 리디렉션하는 것을 나타내는 stderr 매개 변수에 전달할 수 있는 특수 값

Popen

새 프로세스에서 서브루틴을 실행합니다.

구성 매개변수

(args, bufsize=-1, 실행 가능=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=None, Startupinfo=None, Creationflags=0, Restore_signals=True, start_new_session=False, pass_fds=(), *, 인코딩=None, 오류=None , text=없음)

args: 문자열 또는 시퀀스. 시퀀스인 경우 args의 첫 번째 요소는 실행될 프로그램이고, 문자열인 경우 해석은 플랫폼에 따라 다릅니다. POSIX 시스템에서 args는 실행될 프로그램의 이름 또는 경로로 해석됩니다. (단, 프로그램에 매개변수가 전달되지 않은 경우)

shell: 실행할 프로그램으로 쉘을 사용할지 여부를 지정합니다. True로 설정하면 문자열 형식의 args 매개변수를 사용하는 것이 더 좋습니다. POSIX 시스템에서 shell=True는 기본적으로 /bin/sh를 셸로 사용합니다. args가 문자열인 경우 문자열은 셸을 통해 실행될 명령을 나타냅니다. args가 시퀀스인 경우 첫 번째 요소는 실행될 프로그램을 지정하고 다른 요소는 매개변수로 처리됩니다.
Windows 시스템에서 shell=True는 기본적으로 COMSPEC 환경 변수에 지정된 셸(일반적으로 C:WINDOWSsystem32cmd.exe)을 사용합니다. shell=True를 지정해야 하는 유일한 시나리오는 실행할 명령이 dir, copy와 같이 셸에 내장되어 있는 경우입니다. /bin/sh作为shell。如果args为字符串,该字符串表示要通过shell执行的命令;如果args为序列,第一个元素指定要执行的程序,其他元素视为参数。
在Windows系统,shell=True默认使用COMSPEC环境变量指定的shell,一般是C:WINDOWSsystem32cmd.exe。唯一需要指定shell=True的场景是要执行的指令是shell内置的,如dir, copy

bufsize:创建stdin/stdout/stderr管道文件对象时作为对应的参数传递给open()函数。
0:不始用缓冲
1:使用行缓冲
其他正整数:缓冲大小
负整数(默认):使用系统默认值

executable:使用shell=True的场景很少。shell=True时,在POSIX系统上此参数表示指定一个新的shell程序替换默认shell/bin/sh

stdin/stdout/stderr:分别指定程序执行的标准输入,标准输出,标准错误。可选值包括PIPEDEVNULL,已存在的文件描述符(正整数),已存在的文件对象,None。子进程文件句柄继承自父进程。除此之外,stderr还可以是STDOUT,表示标准错误输出重定向到标准输出。

preexec_fn:限于POSIX系统,设置一个可调用对象,先于子进程中的程序执行。

close_fds:如果为False,文件描述符遵循Inheritance of File Descriptors中描述的inheritable标识。
如果为True,在POSIX系统下,在子进程执行前关闭除0,1,2外的文件描述符。

pass_fds:限于POSIX,可选的文件描述符序列,用于在父子进程间保持开放。只要提供了此参数,close_fds强制设为True。

cwd:在子进程执行前改变工作目录为cwd,可以是字符串或path-like对象。

restore_signals:限于POSIX,略

start_new_session:限于POSIX,略

env:dict对象,为新进程定义环境变量,替换继承自父进程的变量。在Windows下,要运行side-by-side assembly必须包含可用的环境变量SystemRootbufsize:

stdin/stdout/stderr 파이프 파일 객체를 생성할 때 이를 open() 함수에 해당 매개변수로 전달합니다.

0: 버퍼링 사용 안 함 1: 라인 버퍼링 사용 기타 양의 정수: 버퍼 크기

음의 정수(기본값): 시스템 기본값 사용

#🎜 🎜 #executable: shell=True가 사용되는 시나리오는 거의 없습니다. POSIX 시스템에서 shell=True인 경우 이 매개변수는 기본 쉘 /bin/sh를 대체할 새 쉘 프로그램을 지정함을 나타냅니다.

stdin/stdout/stderr: 프로그램 실행의 표준 입력, 표준 출력, 표준 오류를 각각 지정합니다. 선택적 값에는 PIPE, DEVNULL, 기존 파일 설명자(양의 정수), 기존 파일 개체, 없음이 포함됩니다. 하위 프로세스 파일 핸들은 상위 프로세스에서 상속됩니다. 또한 stderr은 STDOUT일 수도 있으며, 이는 표준 오류 출력이 표준 출력으로 리디렉션됨을 나타냅니다.

preexec_fn:

POSIX 시스템으로 제한됨, 하위 프로세스의 프로그램 이전에 실행할 호출 가능 객체를 설정합니다.

close_fds:

False인 경우 파일 설명자는 파일 설명자 상속에 설명된 상속 가능 플래그를 따릅니다. True인 경우 POSIX 시스템에서는 하위 프로세스가 실행되기 전에 0, 1, 2 이외의 파일 설명자가 닫힙니다.

#🎜🎜#pass_fds: #🎜🎜# 상위 프로세스와 하위 프로세스 간에 열린 상태를 유지하는 데 사용되는 선택적 파일 설명자 시퀀스인 POSIX로 제한됩니다. 이 매개변수가 제공될 때마다 close_fds는 강제로 True로 설정됩니다. #🎜🎜##🎜🎜##🎜🎜#cwd: #🎜🎜#자식 프로세스가 실행되기 전에 작업 디렉터리를 cwd로 변경합니다. 하위 프로세스는 문자열이거나 경로류 개체일 수 있습니다. #🎜🎜##🎜🎜##🎜🎜#restore_signals: #🎜🎜#POSIX로 제한됨, 약간 #🎜🎜##🎜🎜##🎜🎜#start_new_session: #🎜🎜#POSIX로 제한됨, 약간 #🎜🎜# #🎜 🎜##🎜🎜#env: #🎜🎜#dict 개체는 새 프로세스에 대한 환경 변수를 정의하고 상위 프로세스에서 상속된 변수를 대체합니다. Windows에서 side-by-side 어셈블리를 실행하려면 사용 가능한 환경 변수 SystemRoot를 포함해야 합니다. #🎜🎜#env가 지정되면 프로그램 실행이 의존하는 모든 환경 변수가 제공되어야 합니다. #🎜🎜##🎜🎜##🎜🎜##🎜🎜#encoding/errors/text/universal_newlines:#🎜🎜#stdin /stdout /stderr은 기본적으로 바이너리 모드로 열립니다. 그러나 인코딩/오류가 지정되거나 텍스트가 True인 경우 stdin/stdout/stderr은 지정된 인코딩 및 오류를 사용하여 텍스트 모드에서 열립니다. universal_newlines 매개변수는 텍스트와 동일하며 이전 버전과의 호환성을 위해 사용됩니다. #🎜🎜##🎜🎜##🎜🎜#startupinfo: #🎜🎜# Windows 전용, 약간 #🎜🎜##🎜🎜##🎜🎜#creationflags: #🎜🎜# Windows 전용, 약간 #🎜🎜# #🎜 🎜#Method#🎜🎜##🎜🎜##🎜🎜#poll(): #🎜🎜# 하위 프로세스가 종료되었는지 확인하세요. 종료되지 않았음을 나타내려면 None을 반환하고, 그렇지 않으면 returncode 속성을 설정하고 반환합니다. #🎜🎜##🎜🎜##🎜🎜#wait(timeout=None): #🎜🎜#시간 초과 후에도 하위 프로세스가 종료되지 않으면 TimeoutExpired 예외가 발생합니다. 그렇지 않으면 returncode 속성을 설정하고 반환합니다. #🎜🎜#

communicate(input=None, timeout=None): 프로세스 상호 작용: stdin으로 데이터를 보내고, 끝 문자를 읽을 때까지 stdout 또는 stderr의 데이터를 읽습니다. (stdout_data, stderr_data) 형식의 튜플을 반환합니다. 튜플 유형은 문자열 또는 바이트입니다.
입력은 None이거나 하위 프로세스로 전송될 데이터이며, 스트림 열기 모드에 따라 문자열 또는 바이트 유형이 될 수 있습니다.
프로세스의 stdin과 상호 작용하려면 Popen 객체를 생성할 때 stdin=PIPE를 지정해야 합니다. 마찬가지로, 반환된 튜플을 None이 아니게 하려면 stdout=PIPE 및/또는 stderr=PIPE를 설정해야 합니다.
시간 초과 후에도 하위 프로세스가 종료되지 않으면 TimeoutExpired 예외가 발생하지만 하위 프로세스는 종료되지 않습니다. 좋은 애플리케이션은 하위 프로세스를 종료하고 상호 작용을 종료해야 합니다.

proc = subprocess.Popen(...)
try:
    outs, errs = proc.communicate(timeout=15)
except TimeoutExpired:
    proc.kill()
    outs, errs = proc.communicate()

send_signal(signal): Send a 자식 프로세스에 신호

terminate(): 자식 프로세스를 종료합니다. POSIX 시스템에서는 SIGTERM 신호를 하위 프로세스로 보냅니다. Windows 시스템에서는 TerminateProcess()가 호출되어 프로세스를 종료합니다

kill():하위 프로세스를 강제로 종료합니다. POSIX 시스템에서는 SIGKILL 신호를 하위 프로세스로 보냅니다. kill()은 Windows 시스템에서 종료()의 별칭입니다.

속성

args: Popen 생성자, 목록 또는 문자열 유형의 첫 번째 매개변수 전달 Popen构造器的第一个参数,list或string类型

stdin:如果传递给Popen的stdin参数是PIPE,该属性表示string或byte类型的可写stream对象。如果传递给Popen的stdin参数不是PIPE,此属性值为None

stdout:与Popen.stdin相近,但stream对象是可读的

stderr:与Popen.stdout相近

pid:子进程进程号。如果设置了shell=True,pid表示派生shell的进程号

returncode:子进程返回码,None表示进程未终止。负数-N表示进程被信号N终止(仅限POSIX)。

CompletedProcess

run()函数运行的返回值,表示进程执行完成。

属性

args:传入run()函数的第一个参数,list或string类型

returncode:子进程退出码。如果为负数,表示进程因为某个信号退出

stdout:捕获的子进程的标准输出,默认为byte类型,如果run()函数调用时指定了encoding或errors,或设置了text=True则为string类型。如果未捕获标准输出返回None

stderr:捕获的子进程的标准错误,默认为byte类型,如果run()函数调用时指定了encoding或errors,或设置了text=True则为string类型。如果未捕获标准错误返回None

方法

check_returncode():如果returncode非0,抛出CalledProcessError异常

异常

subprocess.SubprocessError

subprocess模块的异常基类

subprocess.TimeoutExpired

子进程执行超时。

属性

cmd:指令

timeout:秒为单位的时间

output:run()check_output()函数捕获到的子进程的输出,否则为None

stdout:output属性别名

stderr:run()函数捕获到的子进程的错误输出,否则为None

subprocess.CalledProcessError

check_call()check_output()

stdin:
if Popen에 전달된 stdin 매개변수는 PIPE이며, 이는 문자열 또는 바이트 유형의 쓰기 가능한 스트림 개체를 나타냅니다. Popen에 전달된 stdin 매개변수가 PIPE가 아닌 경우 이 속성의 값은 None입니다.

stdout:

는 Popen.stdin과 유사하지만 스트림 개체를 읽을 수 있습니다.

stderr:

는 Popen.stdout과 유사합니다.

pid:

자식 프로세스의 프로세스 번호입니다. shell=True가 설정된 경우 pid는 파생된 쉘의 프로세스 번호를 나타냅니다.

returncode:

child 프로세스 반환 코드, None은 프로세스가 종료되지 않았음을 의미합니다. 음수 -N은 프로세스가 신호 N(POSIX에만 해당)에 의해 종료되었음을 의미합니다.

CompletedProcess

run()함수 실행의 반환 값은 프로세스 실행이 완료되었음을 나타냅니다. Attributes

args:

run() 함수, 목록 또는 문자열 유형에 전달된 첫 번째 매개변수


returncode: 🎜하위 프로세스 종료 코드. 음수인 경우 특정 신호로 인해 프로세스가 종료되었음을 의미합니다🎜🎜🎜stdout:🎜 캡처된 하위 프로세스의 표준 출력으로, 에 인코딩 또는 오류가 지정된 경우 기본값이 됩니다. run() 함수가 호출되거나 text=True로 설정된 경우 문자열 형식이 됩니다. 표준 출력이 캡처되지 않으면 없음이 반환됩니다. 🎜🎜🎜stderr: 🎜캡처된 하위 프로세스의 표준 오류, run()시 인코딩 또는 오류가 지정된 경우 기본값은 바이트 유형입니다. > 함수가 호출되거나 텍스트가 설정됩니다. =True는 문자열 유형입니다. 표준 오류가 포착되지 않으면 None을 반환합니다. 🎜🎜Method 🎜🎜🎜check_returncode(): 🎜returncode가 0이 아닌 경우 CalledProcessError 예외 발생 🎜

Exception

subprocess.SubprocessError🎜하위 프로세스 모듈의 예외 기본 클래스🎜

subprocess.TimeoutExpired

🎜하위 프로세스 실행 시간 초과입니다. 🎜🎜Attributes🎜🎜🎜cmd: 🎜Command 🎜🎜🎜timeout: 🎜초 단위 시간 🎜🎜🎜output: 🎜run() 또는 check_output() 함수 캡처 출력 그렇지 않으면 None 🎜🎜🎜stdout: 🎜출력 속성 별칭 🎜🎜🎜stderr: 🎜run() 함수에 의해 캡처된 하위 프로세스의 오류 출력, 그렇지 않으면 None🎜 subprocess.CalledProcessError🎜 check_call() 또는 check_output() 함수가 0이 아닌 상태 코드를 반환할 때 발생합니다. 🎜🎜Attributes🎜🎜🎜returncode: 🎜하위 프로세스의 종료 코드. 음수인 경우 특정 신호로 인해 프로세스가 종료되었음을 의미합니다. 🎜TimeoutExpired와 동일🎜🎜이 기사는 여기에서 끝납니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 🎜python 비디오 튜토리얼🎜 칼럼을 주목하세요! 🎜🎜🎜🎜

위 내용은 Python의 하위 프로세스 클래스 및 상수에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
파이썬 : 기본 응용 프로그램 탐색파이썬 : 기본 응용 프로그램 탐색Apr 10, 2025 am 09:41 AM

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?Apr 09, 2025 pm 04:33 PM

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Apr 02, 2025 am 07:12 AM

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 코멘트 분석에서 Jieba Word 세분화의 정확성을 향상시키는 방법은 무엇입니까?경치 좋은 스팟 코멘트 분석에서 Jieba Word 세분화의 정확성을 향상시키는 방법은 무엇입니까?Apr 02, 2025 am 07:09 AM

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...

정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까?정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까?Apr 02, 2025 am 07:06 AM

정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까? HTML 또는 기타 마크 업 언어를 다룰 때는 정규 표현식이 종종 필요합니다.

Inversiting.com의 크롤링 메커니즘을 우회하는 방법은 무엇입니까?Inversiting.com의 크롤링 메커니즘을 우회하는 방법은 무엇입니까?Apr 02, 2025 am 07:03 AM

Investing.com의 크롤링 전략 이해 많은 사람들이 종종 Investing.com (https://cn.investing.com/news/latest-news)에서 뉴스 데이터를 크롤링하려고합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.