在Popen对象中,可以设值subprocess.stdout=PIPE 即通过管道 p.stdout.read()取出 该进程的标准输出
preexec_fn 如果将preexec_fn设置为可调用对象,则该对象将在子进程执行前被调用。
如果close_fds为true,则在执行子进程之前,将关闭除0,1和2之外的所有文件描述符。
如果shell为true,则指定的命令将通过shell执行。
如果cwd不是None,那么在执行子代之前,当前目录将更改为cwd。
如果env不是None,它将为新进程定义环境变量。
如果设置universal_newlines为true,则文件对象stdout和stderr将作为文本文件打开,但可能会有\ n,Unix行尾约定\ r,Macintosh约定或\ r \ n中的任何行终止, Windows约定。所有这些外部表示被Python程序视为\ n。注意:此功能仅在Python是使用通用换行支持(默认)构建时才可用。此外,文件对象stdout,stdin和stderr的newlines属性不会被communications()方法更新。
如果设置了STARTUPINFO和creationflags,将被传递到下层的CreateProcess()函数。他们可以指定诸如主窗口的外观和新过程的优先级等内容。(仅限Windows)
Popen对象的一些方法
Popen.poll() 检查子进程是否终止,返回对象的returncode
Popen.wait() 等待子进程完成,阻塞。返回returncode
Popen.communicate(input=None) 将信息输入到进程,从stdout和stderr中读取数据,直到达到文件结尾。等待进程终止。可选的stdin参数应该是要发送到子进程的字符串,如果没有数据应发送给子进程,则为None。
返回一个元组(stdout,stderr) 但是读取的数据缓存在内存中,所以如果数据量很大或者无限,就不要使用这种方法
Popen.pid 返回子进程的pid
Popen.returncode 读取进程的状态码 None —— 子进程尚未结束;
==0 —— 子进程正常退出;
> 0—— 子进程异常退出,returncode对应于出错码;
< 0—— 子进程被信号杀掉了。
Popen.kill() 杀死进程
相关推荐:
基于Python Shell获取hostname和fqdn释疑
bpython 功能强大的Python shell
以上就是利用python执行shell脚本 并动态传参 及subprocess基本使用 的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
更多相关阅读请进入《Python》频道 >>

Python编程 从入门到实践 第2版
python入门书籍,非常畅销,超高好评,python官方公认好书。