subprocess使用
import subprocess
p = subprocess.Popen('ls -l', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=1)
- bufsize: 缓冲区大小. 当创建标准流的管道对象时使用默认 -1.
0: 不使用缓冲区
1: 表示 行缓冲, 仅当 universal_newlines=True时可用, 也就是文本模式
正数: 表示缓冲区大小
负数: 表示使用系统默认的缓冲区大小
- Popen 对象方法
1. poll(): 检查进程是否终止: 如果终止返回 returncode, 否则返回 None
2. wait(): 等待子进程终止
3. communicate(input,timeout): 和子进程交互, 发送和读取数据.
4. terminate(): 停止子进程. 发送 SIGTERM信号到子进程
5. kill(): 杀死子进程. 发送 SIGKILL信号到子进程
- 实例
import time
import subprocess
def cmd(command):
subp = subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding="utf-8")
subp.wait(2)
if subp.poll() == 0:
print(subp.communicate()[1])
else:
print("失败")
cmd("java -version")
cmd("exit 1")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!