python调用外部程序 退出_笔记||Python3进阶之调用外部程序

像wget可以下载文件

ffmpeg可以切割、合并、转换、录制视频

free命令可以查看linux内存使用信息

python提供了库来调用外部程序、命令?》

最常见的两种方法:

①os.system os库里面的system参数

②subprocess subprocess库 里面的对和函数

如:

import os

os.system('notepad')

print('记事本已关闭')

注意:调用外部程序没有退出时,python程序会一直停在那里

对于有参数的命令,os.system()参数 直接把参数放在字符串中一起传入即可

向记事本传递参数,打开python.txt文件?》

如:

import os

os.sys('notepad c:\python.txt')

=====================================================

python实现录屏功能?》

import os

# 输出视频文件

import time

outputfile = 'C:\shipin' + time.strftime('%Y%m%d_%H%M%S', time.localtime()) + '.mp4'

# 工具目录

ffmpeg = r'C:\FFmpeg\安装包\ffmpeg-4.1-win64-static\bin\ffmpeg.exe'

settings = [

'-y -rtbufsize 100M -f gdigrab -framerate 10', # 帧率等

'-offset_x 1000 -offset_y 0 -video_size 640x480', # 录制指定屏幕区域

'-draw_mouse 1 -i desktop -c:v libx264', # 视频编码格式

'-r 20 -preset medium -tune zerolatency -crf 35', # 视频压缩参数

'-pix_fmt yuv420p -fs 100M -movflags +faststart "%s"' % outputfile # 大小限制 等

]

# 将参数组合起来

recordingCmdLine = ' '.join([ffmpeg]+settings)

# 查看命令内容

print(recordingCmdLine)

# 执行命令录制视频

os.system(recordingCmdLine)

======================================================================================

# 返回值

# 不管windows还是linux,如果一个程序它的退出码为0就是表示成功的话

# 如果我们只需要判断调用是否成功,也就是是否为0

import os

import subprocess

# ret = os.system('ls')

# if ret == 0:

# print(ret)

# os.system提供了简单的调用其他程序的功能

# 而python里面有另一个模块subprocess,提供了更为强大的功能

# 使用subprocess最常见的目的就是检查应用的输出

# 因为os.system只能获得返回码,输出到屏幕的内容并不能获取

# 如果想获取被调用的命令或工具输出到终端的信息,并进行处理,可以使用subprocess库里面的check_output函数

# 这个方法需要等到被动月供程序退出,才能返回

# shell=True 表示使用终端shell执行程序;参数encoding:指定哪种解码方式,

# 不填,是缺省值None,需要我们自己去解码

# ret = subprocess.check_output('dir', shell=True, encoding='gbk')

# print(ret)

# print(ret.decode('gbk'))# 如果我们需要被调用程序还没退出时,就获取其输出的信息;# 或者在被调用程序运行的过程中,输入一些信息给被调用程序

# 需要使用subprocess库里面的Popen类

# Popen可以非阻塞式调用外部程序,也就是说,无需等待被调用程序结束。脚本的代码可以继续往下执行

from subprocess import PIPE,Popen

# popen = Popen(args='notepad c:\python.txt', shell=True)

# print('done')

# Popen同样可以获取外部程序的输出

# stdout=PIPE 表示将被调用的程序的标准输出信息获取到管道文件中

# 要获取程序的输出信息,就要这样指定。

popen = Popen('dir c:',

stdout=PIPE,

shell=True,

encoding='gbk')

output, err = popen.communicate()

print(output)

print('----------------------------------------------')

print(err)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值