python subprocess
Python的subprocess模块是用于创建和管理子进程的模块。它提供了一种在Python中调用外部命令的方式,可以执行系统命令、启动新的进程、连接到子进程的输入/输出管道等。
基本函数
subprocess.run
示例(只可以捕获标准输出,标准错误不知道咋获取,异常也没抛。。。以后再看,现在有事)
subprocess.Popen
subprocess.Popen参数解释
– args
:要执行的命令及其参数。可以是一个字符串或一个字符串列表。
– bufsize
:指定缓冲区的大小。默认值为-1,表示使用系统默认的缓冲区大小。
– executable
:指定要执行的可执行文件的路径。默认值为None,表示使用系统默认的可执行文件。
– stdin
:指定子进程的标准输入。可以是一个文件对象或一个文件描述符。默认值为None,表示使用父进程的标准输入。
– stdout
:指定子进程的标准输出。可以是一个文件对象或一个文件描述符。默认值为None,表示使用父进程的标准输出。
– stderr
:指定子进程的标准错误输出。可以是一个文件对象或一个文件描述符。默认值为None,表示使用父进程的标准错误输出。
– preexec_fn
:在子进程执行前调用的可调用对象。默认值为None,表示不调用任何函数。
示例:使用preexec_fn来将Popen对象绑定进程组
当使用shell=True
时,subprocess.Popen()
函数创建的子进程实际上是一个shell进程,而不是直接执行的命令。因此,向Popen
对象发送信号并不能直接影响到子进程。
如果需要向通过shell执行的命令发送信号,可以使用os.killpg()
函数来发送信号给进程组。具体步骤如下:
– close_fds
:指定是否在子进程中关闭父进程中打开的文件描述符。默认值为True,表示关闭文件描述符。
– shell
:指定是否通过shell来执行命令。默认值为False,表示不通过shell执行命令。
使用shell执行和不使用shell执行的差异(以管道为例)
– cwd
:指定子进程的当前工作目录。默认值为None,表示使用父进程的当前工作目录。
– env
:指定子进程的环境变量。可以是一个字典,表示环境变量的键值对。默认值为None,表示使用父进程的环境变量。
– universal_newlines
:指定是否将输入/输出流以文本模式打开。默认值为False,表示以二进制模式打开。
– startupinfo
:指定子进程的启动信息。可以是一个subprocess.STARTUPINFO对象,用于设置子进程的一些属性。默认值为None。
– creationflags
:指定子进程的创建标志。默认值为0,表示使用默认的创建标志。
– restore_signals
:指定是否在子进程中恢复信号处理程序。默认值为True,表示恢复信号处理程序。
– start_new_session
:指定是否在新的会话中启动子进程。默认值为False,表示在当前会话中启动子进程。
– pass_fds
:指定要传递给子进程的文件描述符列表。默认值为(),表示不传递文件描述符。
– encoding
:指定输入/输出的编码方式。默认值为None,表示使用系统默认的编码方式。
– errors
:指定输入/输出的错误处理方式。默认值为None,表示使用系统默认的错误处理方式。
总结
Popen对象的常用方法和属性
subprocess.check_output
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。