python-调用外部程序
一、类型
【1】os.system()
【2】subprocess.check_output()
【3】subprocess.Popen()
二、区别
调用类型 | 引入的包 | 能否直接打印结果 | 是否为阻塞式调用 |
os.system() | import os | 能 | 是 |
subprocess.check_output() | import subprocess | 不能 | 是 |
subprocess.Popen() | import subprocess | 能 | 否 |
注:阻塞式调用:没有执行完例如os.system()语句,不能执行后面的语句
三、具体代码
【1】os.system()
# -*- coding:utf-8 -*-
# __author__:
# 2022/5/8
import os
# 1、打开操作系统的shell,执行命令行函数:相当于打开操作系统(终端),输入命令行,并且执行,还会直接打印出来
# 2、阻塞式调用,只有当os.system退出后,才会执行os.system后面的语句
os.system('ifconfig') # 查看mac电脑ip
# 3、查看返回值
# 调用成功,返回0
print(os.system('ifconfig'))
# 调用失败,返回32512
print(os.system('mspaittttt'))
【2】subprocess.check_output()
import subprocess
# check_output执行终端命令,以字节的方式返回;但是执行结果不会打印出来
# 是阻塞式调用,如果check_output没有调用成功,不会执行后面的语句
data = subprocess.check_output('ifconfig')
print(data)
# 可以将返回的字节解码,打印出字符
print(data.decode())
【3】subprocess.Popen()
import subprocess
# Pepen执行终端命令,执行结果会直接打印出来
# 不是阻塞式调用,如果popen没有调用成功,还会执行后面语句
subprocess.Popen('ifconfig')