Python的调用程序
任务
- 调用系统命令ping 判断局域网内有哪些主机存活
- 假设你用c语言写了一个算法,需要对该算法进行测试。测试的数据集几百个。这时可以使用过GCC生成test.exe,再使用python批量调用该exe去测试数据集。
简而言之,就是python需要调用系统程序或者其他程序。
方法
- os.system
- os.popen
- subprocess
os.system
假设有一个test.exe,返回值为0或者1.调用后,在窗口会显示test.exe中printf的信息,并且返回值为0或者1.调用系统进程类似。这个方法的缺点很明显,返回值中没有包含想要的内容,比如下面的ping结果。
>>> os.system("ping 192.168.1.1")
正在 Ping 192.168.1.1 具有 32 字节的数据:
来自 192.168.1.1 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.1 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.1 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.1 的回复: 字节=32 时间<1ms TTL=64
192.168.1.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
0
os.popen
这个方法可以返回filelike的结果,使用文件的读方法可以得到有效信息,但是没有程序的返回值。
>>> s = os.popen("ping 192.168.1.1")
>>> s.read()
'\n正在 Ping 192.168.1.1 具有 32 字节的数据:\n来自 192.168.1.1 的回复: 字节=32
时间<1ms TTL=64\n来自 192.168.1.1 的回复: 字节=32 时间=4ms TTL=64\n来自 192.168.
1.1 的回复: 字节=32 时间<1ms TTL=64\n来自 192.168.1.1 的回复: 字节=32 时间<1ms T
TL=64\n\n192.168.1.1 的 Ping 统计信息:\n 数据包: 已发送 = 4,已接收 = 4,丢失
= 0 (0% 丢失),\n往返行程的估计时间(以毫秒为单位):\n 最短 = 0ms,最长 = 4ms
,平均 = 1ms\n'
>>>
subprocess
这个模块的功能比较强大,同时使用起来也比较复杂。官方说法是用来替代os.system的。在The Python Standard Library17.5章节。
基本上包含了上面两个方法的功能。
import subprocess
a = subprocess.run("ping 192.168.1.1",stdout=subprocess.PIPE)
a.stdout.decode("gb2312")
a.returncode
上面的模块既可以返回程序(进程)的返回结果,又可以返回标准打印信息。
>>> a.stdout.decode("gb2312")
'\r\n正在 Ping 192.168.1.1 具有 32 字节的数据:\r\n来自 192.168.1.1 的回复: 字节=
32 时间<1ms TTL=64\r\n来自 192.168.1.1 的回复: 字节=32 时间<1ms TTL=64\r\n来自 1
92.168.1.1 的回复: 字节=32 时间<1ms TTL=64\r\n来自 192.168.1.1 的回复: 字节=32
时间<1ms TTL=64\r\n\r\n192.168.1.1 的 Ping 统计信息:\r\n 数据包: 已发送 = 4,
已接收 = 4,丢失 = 0 (0% 丢失),\r\n往返行程的估计时间(以毫秒为单位):\r\n 最
短 = 0ms,最长 = 0ms,平均 = 0ms\r\n'
>>> a.returncode
0
>>>
Python的调用程序的更多相关文章
- Python基础笔记系列十四:python无缝调用c程序
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! python语言可以对c程序代码进行调用,以弥补python语言低性能的缺 ...
- Python Module_subprocess_子进程(程序调用)
目录 目录 前言 软件环境 认识subprocess Popen Constructor构造函数 Class Popen的参数 args 调用程序 调用Shell指令 stdinstdoutstder ...
- 4.1 python中调用rust程序
概述 使用rust-cpython将rust程序做为python模块调用: 通常为了提高python的性能: 参考 https://github.com/dgrunwald/rust-cpython ...
- 简明python教程 --C++程序员的视角(一):数值类型、字符串、运算符和控制流
最初的步骤 Python是大小写敏感的 任何在#符号右面的内容都是注释 >>> help('print')在“print”上使用引号,那样Python就可以理解我是希望获取关于“pr ...
- python 可调用对象之类实例
可调用对象,即任何可以通过函数操作符()来调用的对象. python可调用对象大致可以分为4类: 1.函数 python中有三种函数:内建函数(BIFs).用户自定义函数(UDF).lambda表达式 ...
- 在python里调用java的py4j的使用方法
py4j可以使python和java互调 py4j并不会开启jvm,需要先启动jvm server,然后再使用python的client去连接jvm GatewayServer实例:允许python程 ...
- python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)
昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...
- Python模块调用方式详解
Python模块调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其 ...
- 使用ctypes在Python中调用C++动态库
使用ctypes在Python中调用C++动态库 入门操作 使用ctypes库可以直接调用C语言编写的动态库,而如果是调用C++编写的动态库,需要使用extern关键字对动态库的函数进行声明: #in ...
随机推荐
- VW结合rem进行移动端布局
---恢复内容开始--- html { font-size:10vw: } div { width: 1rem; height: 1rem; } VW这个单位适合用来适应不同设备的 一个设备的宽度就为 ...
- STL源码分析与实现-stl_list容器
1. stl_list 介绍 今天我们来总结一下stl_List, 通过之前介绍单链表的文章,其实对链表的基本操作已经十分熟悉了,那对于stl_list,无非就是链表结构不一样,至于其中的增删改查的细 ...
- python计算圆面积
#coding=gbk #coding=utf-8 #-*- coding: UTF-8 -*- #调用math包处理相关的运算 import math #圆半径 r = 2 #计算圆面积π*r*r与 ...
- c#导出word文档
为方便下次遇到不知道去哪找先把它存放在这里,以下是保存导出word主要类方法 public class BiultReportForm { /// <summary>word 应用对象 & ...
- URL 路由
一般情况下,一个 URL 字符串和它对应的控制器中类和方法是一一对应的关系. URL 中的每一段通常遵循下面的规则: example.com/class/function/id/ 但是有时候,你可能想 ...
- 大数据学习——hive基本操作
1 建表 create table student(id int,name string ,age int) row format delimitedfields terminated by ','; ...
- Leetcode 264.丑数II
丑数II 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10 ...
- 局部二值模式(Local Binary Patterns)纹理灰度与旋转不变性
Multiresolution Gray Scale and Rotation Invariant Texture Classification with Local Binary Patterns, ...
- Go map基础
package main import "fmt" //Map //创建:make(map[string]int) //获取元素: m[key] //key不存在时,获得value ...
- smartctl---查看硬件接口
1.查看磁盘信息: #smartctl -i /dev/sda smartctl 5.42 2011-10-20 r3458 [x86_64-linux-2.6.18-308.16.1.el5] (l ...