随笔 - 30  文章 - 0  评论 - 0  阅读 - 6257

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')

 

posted on   墙角一枝花  阅读(451)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示