关于用python作为第三方程序,来调用shell命令的问题,以及返回值格式解析
1.用python语言作为第三方,调用shell
在python2.x中,可以通过包commands来进行调用shell命令。如下:
cmd就是你要调用的shell命令,把环境配置好,输入正确的命令格式,就可以作为一个第三方程序,来进行命令的调用了。
但是在python3.x中取消了commands包,所以这种方式肯定是不能用了,解决方法很多,这边推荐一种万能的方式。
同理,你只要管好,环境和命令正确就可以了。这个命令在最新版的python已经逐渐被淘汰了。它最大的缺点是异步,有时候你的逻辑很正确,但是一用它,会给你带来很大的烦恼:网络状况不好时,它会给你返回一个‘’空字符串,对于命令的执行的返回,你就没法判断到底有没有执行成功。python3.x就很好的解决了这个问题。
这里推荐用python3.x的subprocess模块中的Popen()来解决,它会一直等待命令的执行并返回。
这里简要介绍下: p = subprocess.Popen(r'/root/UlordChain/src/ulord-cli getrawtransaction 05b78f5e4896fd72518b1b855b58fb23e36721799a50913796aba854de1bcc17 1',shell=True, close_fds=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
r'/root/UlordChain/src/ulord-cli getrawtransaction 05b78f5e4896fd72518b1b855b58fb23e36721799a50913796aba854de1bcc17 1' 你要执行的外部第三方的命令,也可以是shell程序。
shell=True, close_fds=True close_fds是如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。
stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄。
stdout, stderr = p.communicate() 无限等待上面命令的执行的结果,知道命令执行完毕
returncode = p.returncode() 获取命令执行返回的特征码,0即执行成功。
2.不管是shell还是外部第三方程序执行后进行解析操作。
首先如果返回值是一个json字符串,这样就很方便方便你提取其中的某个数据,如果返回值不是json字符串,通过json.loads()函数的转换,你就会获取到一个json字符串。
raw_data是最原始的命令返回值,通过loads()转换python对象。通过get函数进行提取,如果不熟悉,可以分步提取,先提取出想要的键,再根据键来提取值,熟练之后就可以一步到位了。
关于用python作为第三方程序,来调用shell命令的问题,以及返回值格式解析的更多相关文章
- python 调用shell命令的方法
在python程序中调用shell命令,是件很酷且常用的事情…… 1. os.system(command) 此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出 ...
- Python 调用 Shell命令
python程序中调用shell命令,是件很酷且常用的事情今天来总结一下 1.使用os模块 的 system 此函数会启动子进程,在子进程中执行command,并返回comman ...
- 【转载】如何在C语言中调用shell命令
转载自:http://blog.csdn.net/chdhust/article/details/7951576 如何在C语言中调用shell命令 在linux操作系统中,很多shell命令使用起来非 ...
- python 调用shell命令三种方法
#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将pyth ...
- 用Python调用Shell命令
Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令. 用Python调用Shell命令有如下几种方式: 第一种 ...
- python 调用 shell 命令方法
python调用shell命令方法 1.os.system(cmd) 缺点:不能获取返回值 2.os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等 ...
- python 中调用shell命令
subprocess模块 根据Python官方文档说明,subprocess模块用于取代上面这些模块.有一个用Python实现的并行ssh工具—mssh,代码很简短,不过很有意思,它在线程中调用sub ...
- iTOP-开发板-MiniLinux-C程序调用shell命令
本文档介绍的是在 linux 系统环境下 linux-C 调用 shell 命令实验步骤,和文档压缩包一起的“iTOP-开发板-MiniLinux-SHELL_V1.0.zip”是 c 程序源码.Li ...
- python 调用 shell 命令
记录 python 调用 shell 命令的方法 加载 os 模块, 使用 os 类 import os; os.system("ls /");
随机推荐
- Android(java)学习笔记97:使用GridView以及重写BaseAdapter
1. BaseAdapter: 对于ListView.GridView.Gallery.Spinner等等,它是它们的适配器,直接继承自接口类Adapter的,使用BaseAdapter时需要重写很多 ...
- numpy+pandas+matplotlib+tushare股票分析
一.数据导入 安装tushare模块包 pip install tushare http://tushare.org/ tushare是一个财经数据接口包 import numpy as np imp ...
- Notepad++配色方案
1.下载notepad++样式文件 styles.xml 2.将该文件拷贝到 C:\Users\Administrator\AppData\Roaming\Notepad++ 目录(将Administ ...
- 1.Spring Cloud初相识--------简单项目搭建
开发工具:STS 代码下载链接:GitHub管理项目 前言: Springcloud 算是当前比较火的技术,一套微服务架构的技术. 我个人对微服务的理解为: 服务可以代表service,微服务就是小的 ...
- cursor 在某一操作之前打开 fetch cursorname into var1
工作中遇到这样一个问题,在一个存储过程中,我想让一个游标在某一操作之前打开,说白了操作会影响我游标中已定义好的数据,这里我们用到游标的第二种用法,代码如下 cursor c_relation is s ...
- LNMP+HAProxy+Keepalived负载均衡 - LNMP基础环境准备
环境版本说明: 服务器系统:CentOS 7.5: ``` cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) # 输出结果 `` ...
- MySQL创建民族表的SQL语句
MySQL创建民族表的SQL语句 CREATE TABLE `nation` ( `id` ) unsigned NOT NULL AUTO_INCREMENT, `nation` ) NOT NUL ...
- Deepin15.7 更改软件的jdk
最近更新了系统,发现smartsvn.smartgit.Dbeaver都无法打开了,上网googlel一下,发现是java9的问题,需要把软件的java版本更改一下就可以了 先上jdk的位置 一.sm ...
- 好用的 Html、CSS、JavaScript 开源项目
1.极简模块化前端UI框架 Layui 评分:9.3:收藏量:873 授权协议:MIT 开发语言:JavaScript.HTML/CSS 操作系统:跨平台 源码地址:https://gitee.com ...
- hadoop的shuffle过程
1. shuffle: 洗牌.发牌——(核心机制:数据分区,排序,缓存): shuffle具体来说:就是将maptask输出的处理结果数据,分发给reducetask,并在分发的过程中,对数据按key ...