您现在的位置是:首页 > 正文

python调用程序call_Python下的subprocess.call()使用和注意事项

2024-01-30 21:38:18阅读 0

Python虽然有许多优秀的第三方库,但在实际使用的时候免不了使用一些cmd调用的程序,毕竟这类程序比较底层,更快、也更稳定。比如GDAL、FFmpeg、 ImageMagick等。

利用Python调用cmd的方法也有不少,例如os.system和subprocess.call(),本次主要介绍后者。同时也会说明一些避雷的注意事项。

subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。其中的subprocess.call()则可以调用windows系统cmd命令行执行额外的命令。

在使用subprocess.call()之前,需要保证调用的软件已经添加在系统的环境变量路径中。如GDAL:

image

我以GDAL中的gdalwarp函数为例

image

当程序能在cmd中正确运行时,我们才可能使用subprocess.call()调用它。

其次,你需要在python中安装subprocess这个库(好像有点废话)

image

完成这些废话步骤之后,就可以愉快的运行起来了。比如:

GDAL的影像拼接:

image

裁剪:(图略)

GIF制作:(图略)

图像拼接:

image

视频流的声音导入:(图略)

以下:

1、subprocess.call()的输出反馈有3个,分别是0,1,2。其中0代表正确执行,1和2都是错误执行,2通常是没有读取到文件,1的反馈目前未知。

2、windows的cmd是有输入字符长度限制的,据查,win7以上的系统大概是8k个字符长度(数字、英文),所以,一旦输入的字符长度过长,就需要分批次运行(暂时没有其他解法)。或者不使用cmd方法。其他操作系统未知。

到此为止

image

微信号:一个有趣的灵魂W关注我们,了解更多

网站文章

  • 详解TCP/IP协议栈

    详解TCP/IP协议栈

    之前对网络各层作用的了解一直都比较模糊,对各个协议的作用也不甚清楚,最近看到了一篇对TCP/IP协议栈讲解比较清晰的博文,特地转载过来。什么是TCP/IP协议栈TCP/IP 协议栈是一系列网络协议的总...

    2024-01-30 21:37:44
  • SpringBoot devtools热部署

    SpringBoot devtools热部署

    一、pom.xml添加依赖二、修改idea默认配置三、测试是否生效一、pom.xml添加依赖<dependencies> <!-- 基础组件--> <dependency> <groupId>org.springframework.boot</groupId...

    2024-01-30 21:37:38
  • 实验四

    PC端配置:配置ip地址、网关。交换机配置:system-viewvlan 30vlan 40quitinterface gi 1/0/1port link-type accessport access vlan 30interface gi 1/0/2port link-type accessport access vlan 40quitint...

    2024-01-30 21:37:32
  • 《嵌入式虚拟化技术与应用》:深入浅出阐述嵌入式虚拟机原理,实现“小而能”嵌入式虚拟机!

    《嵌入式虚拟化技术与应用》:深入浅出阐述嵌入式虚拟机原理,实现“小而能”嵌入式虚拟机!

    本书首先介绍虚拟化技术的基本原理,以及KVM在云服务器上实现。然后围绕虚拟化技术的核心内容,从CPU虚拟化、内存虚拟化、中断虚拟化和设备虚拟化这四个方面,重点介绍了开源嵌入式虚拟机ACRN的架构、原理...

    2024-01-30 21:37:04
  • Java通过JNI调用dll动态库详细步骤 最新发布

    Java通过JNI调用dll动态库详细步骤 最新发布

    Java通过JNI调用dll动态库,供测试使用。dll实现打印语句‘this is a test from zdll!’,及返回字符串‘hello zdll’的功能

    2024-01-30 21:36:57
  • React解密:React高阶组件是什么?

    React中比较高大上的东西,高阶组件应该算是一个点,开发中也许写的不多,但是我们必须要直到高阶组件是什么,高阶组件能干什么?A higher-order component is a functio...

    2024-01-30 21:36:48
  • Django安装

    Django安装

    我们使用anaconda真实环境创建项目,这样可以更快的完成将来项目的创建一、环境配置(没有配置的同学需要进行操作)1.1查询anaconda环境1.1.1点击anaconda命令窗口1.1.2在命令...

    2024-01-30 21:36:41
  • 快速排序java练习

    快速排序java练习

    快速排序是一种高效的排序算法,其基本思想是通过一趟排序将待排序列分割成独立的两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再分别对这两部分进行排序,最终得到一个有序序列。其具体实现如下:1...

    2024-01-30 21:36:11
  • 现代浏览器内部机制 Part 4 | 事件

    现代浏览器内部机制 Part 4 | 事件

    原文:Inside Look at Modern Web Browser(part 4)[1]作者:Mariko Kosaka[2]译者:kyrieliu终于到最后一篇了!作为这个系列的...

    2024-01-30 21:36:05
  • MySQL触发器

    触发器含义在发生insert,update,delete等事件时,符合特定条件后,执行特定语句即为触发器。触发器操作创建触发器create trigger 触发器名称 begin或者after 触发事件 on 表名 for each row 执行语句;create trigger 触发器名称 begin或者after 触发事件 on 表名 for each row begi

    2024-01-30 21:35:59