我需要在调用 sh 文件时以及该进程运行的整个过程中运行 python 脚本。
基本上它是安装过程中的一个 python spinner
import sys
import time
do
def spinn():
print "processing...\\",
syms = ['\\', '|', '/', '-']
bs = '\b'
for _ in range(10):
for sym in syms:
sys.stdout.write("\b%s" % sym)
sys.stdout.flush()
time.sleep(.1)
spinn()
while
def installing():
import subprocess
subprocess.call(["sudo sh", "installer.sh"],shell=True)
installing()
有没有办法在Python上做到这一点?
subprocess.call()
等待子进程退出。使用 subprocess.Popen
代替。然后定期使用 .poll()
来检查进程何时退出。
import itertools
import os
import subprocess
import sys
import time
def installing():
null = open(os.devnull, 'wb')
p = subprocess.Popen('echo blah && sleep 5', shell=True, stdout=null)
#p = subprocess.Popen('sudo sh installer.sh', shell=True, stdout=null)
return p, null
def spin(p_stdout):
p, stdout = p_stdout
syms = itertools.cycle(['\\', '|', '/', '-'])
sys.stdout.write('processing....')
sys.stdout.flush()
while p.poll() is None:
sys.stdout.write('\b'+next(syms))
sys.stdout.flush()
time.sleep(0.1)
p.wait()
stdout.close()
spin(installing())
我是一名优秀的程序员,十分优秀!