import os
cmd = r'd:/tools/wget http://mirrors.shou.com/nginx/nginx-1.13.9.zip'
os.system(cmd)
import os
version = input('请输入安装包版本:')
cmd = fr'd:\tools\wget http://mirrors.sohu.com/nginx/nginx-{version}.zip'
os.system(cmd)
print('下载完毕')
os.system 函数调用外部程序的时候, 必须要等被调用程序执行结束, 才会接着往下执行代码。 否则就会一直等待。os.system 函数没法获取 被调用程序输出到终端窗口的内容。
打开excel文件
os.startfile('d:/xx.xlsx')
可以获取外部程序输出到屏幕的内容。
from subprocess import PIPE, Popen
# 返回的是 Popen 实例对象
proc = Popen(
'fsutil volume diskfree c:',
stdin = None,
stdout = PIPE,
stderr = PIPE,
shell=True)
# communicate 方法返回 输出到 标准输出 和 标准错误 的字节串内容
# 标准输出设备和 标准错误设备 当前都是本终端设备
outinfo, errinfo = proc.communicate()
# 注意返回的内容是bytes 不是 str ,我的是中文windows,所以用gbk解码
outinfo = outinfo.decode('gbk')
errinfo = errinfo.decode('gbk')
print (outinfo)
print ('-------------')
print (errinfo)
outputList = outinfo.splitlines()
# 剩余量
free = int(outputList[0].split(':')[1].replace(',','').split('(')[0].strip())
# 总空间
total = int(outputList[1].split(':')[1].replace(',','').split('(')[0].strip())
if (free/total < 0.1):
print('!! 剩余空间告急!!')
else:
print('剩余空间足够')
其中communicate方法会返回两个字符串对象。分别对应被调用程序输出到标准输出和标准错误的字符串内容。
这个方法返回的就是 屏幕上显示的内容。但是这个返回的是 bytes 字节串,不是 str 字符串。
前面我们已经学过,bytes要解码为str,就需要调用 decode方法。 我的是中文windows,所以通常外部程序输出的都是gbk编码的字节串。 所以参数指定为gbk。
启动外部程序后,不需要等待外部程序结束。
from subprocess import Popen
proc = Popen(
args='wget http://xxxxserver/xxxx.zip',
shell=True
)
print ('让它下载,我们接下来做其他事情。。。。')