python打印子进程进度

创建脚本,run.py

import sys
import subprocess
from time import sleep
from multiprocessing import Process

def process_bar(bar="#"):
    print("%s" % bar,end="")

def execute_local_command(cmd):
    "执行本地命令"
    p = subprocess.Popen(cmd,shell=True)
    print("开始执行:",end="")
    while None == p.poll():
        show_process_bar = Process(target=process_bar,args=("#",))
        show_process_bar.start()
        show_process_bar.join()
        sleep(1)
    print("[完成]") if p.returncode == 0 else print("[失败]")

execute_local_command(sys.argv[1])

创建测试脚本,a.sh

#!/bin/bash
sleep 5
exit -2

运行:python3 run.py ./a.sh

结果

liwl@work:[~]
$ python run.py  ./a.sh 
开始执行:#####[失败]
liwl@work:[~]

使用场景

  • 调用耗时比较长的本地脚本,比如sudo apt install com.qq.weixin.deepin -y命令
posted @ 2022-04-29 13:59  liwldev  阅读(181)  评论(0编辑  收藏  举报