本篇文章给人人带来的内容是关于python中subprocess类与常量的细致引见,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。
常量
subprocess.DEVNULL:可通报给stdin, stdout, stderr参数的特别值,意味着将运用特别文件os.devnull重定向输入输出
subprocess.PIPE:可通报给stdin, stdout, stderr参数的特别值,意味着运用管道重定向输入输出
subprocess.STDOUT:可通报给stderr参数的特别值,示意重定向规范毛病到规范输出
Popen
在一个新的历程中实行子顺序。
组织参数
(args, bufsize=-1, executable=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=(), *, encoding=None, errors=None, text=None)
args:字符串或序列。假如是序列,则args中的第一个元素是要实行的顺序;假如是字符串,诠释实行与平台有关,在POSIX体系args将被诠释为要实行的顺序的称号或途径(条件是不通报任何参数给顺序)。
shell:指定是不是运用shell作为要实行的顺序。假如设置为True,更引荐和字符串范例的args参数运用。
在POSIX体系,shell=True默许运用/bin/sh
作为shell。假如args为字符串,该字符串示意要经由过程shell实行的敕令;假如args为序列,第一个元素指定要实行的顺序,其他元素视为参数。
在Windows体系,shell=True默许运用COMSPEC
环境变量指定的shell,平常是C:\WINDOWS\system32\cmd.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:离别指定顺序实行的规范输入,规范输出,规范毛病。可选值包括PIPE
,DEVNULL
,已存在的文件形貌符(正整数),已存在的文件对象,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
必需包括可用的环境变量SystemRoot
。假如指定了env,就必需供应顺序实行依靠的一切环境变量
encoding/errors/text/universal_newlines:stdin/stdout/stderr默许以二进制情势翻开。但假如指定了encoding/errors或许text为True,将运用指定的encoding和errors以文本情势翻开stdin/stdout/stderr。universal_newlines参数等同于text,用于后向兼容。
startupinfo:仅限于Windows,略
creationflags:仅限于Windows,略
要领
poll():搜检子历程是不是停止。返回None示意未停止,不然设置returncode属性并返回。
wait(timeout=None):假如子历程在timeout后没有停止,抛出TimeoutExpired非常。不然设置returncode属性并返回。
communicate(input=None, timeout=None):历程交互:发送数据到stdin,读取stdout或stderr的数据晓得读取到完毕符。返回(stdout_data, stderr_data)情势的元组,元组范例是string或byte。
input为None或要发送到子历程的数据,依据stream翻开情势的差别,能够是string或byte范例。
假如要和历程的stdin交互,建立Popen对象时须要指定stdin=PIPE。相似的,返回的tuple假如愿望黑白None,须要设置stdout=PIPE和/或stderr=PIPE。
假如子历程在timeout后没有停止,抛出TimeoutExpired非常,但子历程并未kill掉,一个优越的运用应当kill掉子历程并完毕交互:
proc = subprocess.Popen(...) try: outs, errs = proc.communicate(timeout=15) except TimeoutExpired: proc.kill() outs, errs = proc.communicate()
send_signal(signal):发送信号到子历程
terminate():停止子历程。POSIX体系上,发送SIGTERM信号到子历程,Windows体系上会挪用TerminateProcess()停止历程
kill():强迫停止子历程。POSIX体系上,发送SIGKILL信号到子历程。Windows体系上kill()是terminate()的别号
属性
args:传入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()
函数返回非0状况码时抛出。
属性
returncode:子历程退出码。假如为负数,示意历程由于某个信号退出
cmd:同TimeoutExpired
output:同TimeoutExpired
stdout:同TimeoutExpired
stderr:同TimeoutExpired
本篇文章到这里就已悉数完毕了,更多其他精彩内容能够关注ki4网的python视频教程栏目!
以上就是python中subprocess类与常量的细致引见的细致内容,更多请关注ki4网别的相干文章!