Python手册中有这样一段话:
This module intends to replace several other, older modules and functions, such as: os.system、os.spawn*、os.popen*、popen2.*、commands.*
subprocess被用来替换一些老的模块和函数,如:os.system、os.spawn*、os.popen*、popen2.*、commands.*。
举例:
subprocess.run()
作用:运行命令,返回命令执行的结果
import subprocess
r1=subprocess.run("dir",shell=True)
r2=subprocess.run("ping 8.8.8.8 -n 1")
print("-"*50)
print("dir 结果")
print(r1)
print("ping 结果")
print(r2)
执行结果:
G:\python\pythonstudy\lesson10>demo3.py
驱动器 G 中的卷是 train
卷的序列号是 09C1-B27D
G:\python\pythonstudy\lesson10 的目录
2019/01/20 11:02 <DIR> .
2019/01/20 11:02 <DIR> ..
2019/01/20 12:19 2,231 demo1.py
2019/05/20 15:24 960 demo2.py
2019/06/09 09:39 1,628 demo3.py
2019/01/22 14:51 1,446 demo4.py
4 个文件 6,265 字节
2 个目录 176,653,230,080 可用字节
正在 Ping 8.8.8.8 具有 32 字节的数据:
来自 8.8.8.8 的回复: 字节=32 时间=330ms TTL=47
8.8.8.8 的 Ping 统计信息:
数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 330ms,最长 = 330ms,平均 = 330ms
--------------------------------------------------
dir 结果
CompletedProcess(args='dir', returncode=0)
ping 结果
CompletedProcess(args='ping 8.8.8.8 -n 1', returncode=0)
subprocess.call()
作用:执行命令,返回命令执行的状态,0或1
import subprocess
r1=subprocess.call("dir",shell=True)
r2=subprocess.call("ping 8.8.8.8 -n 1")
print("-"*50)
print("dir 结果")
print(r1)
print("ping 结果")
print(r2)
执行结果:
G:\python\pythonstudy\lesson10>demo3.py
驱动器 G 中的卷是 train
卷的序列号是 09C1-B27D
G:\python\pythonstudy\lesson10 的目录
2019/01/20 11:02 <DIR> .
2019/01/20 11:02 <DIR> ..
2019/01/20 12:19 2,231 demo1.py
2019/05/20 15:24 960 demo2.py
2019/06/09 09:43 1,675 demo3.py
2019/01/22 14:51 1,446 demo4.py
4 个文件 6,312 字节