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命令的问题,以及返回值格式解析的更多相关文章

  1. python 调用shell命令的方法

    在python程序中调用shell命令,是件很酷且常用的事情…… 1. os.system(command) 此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出 ...

  2. Python 调用 Shell命令

    python程序中调用shell命令,是件很酷且常用的事情今天来总结一下   1.使用os模块 的  system         此函数会启动子进程,在子进程中执行command,并返回comman ...

  3. 【转载】如何在C语言中调用shell命令

    转载自:http://blog.csdn.net/chdhust/article/details/7951576 如何在C语言中调用shell命令 在linux操作系统中,很多shell命令使用起来非 ...

  4. python 调用shell命令三种方法

    #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将pyth ...

  5. 用Python调用Shell命令

    Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令. 用Python调用Shell命令有如下几种方式: 第一种 ...

  6. python 调用 shell 命令方法

    python调用shell命令方法 1.os.system(cmd) 缺点:不能获取返回值 2.os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等   ...

  7. python 中调用shell命令

    subprocess模块 根据Python官方文档说明,subprocess模块用于取代上面这些模块.有一个用Python实现的并行ssh工具—mssh,代码很简短,不过很有意思,它在线程中调用sub ...

  8. iTOP-开发板-MiniLinux-C程序调用shell命令

    本文档介绍的是在 linux 系统环境下 linux-C 调用 shell 命令实验步骤,和文档压缩包一起的“iTOP-开发板-MiniLinux-SHELL_V1.0.zip”是 c 程序源码.Li ...

  9. python 调用 shell 命令

    记录 python 调用 shell 命令的方法 加载 os 模块, 使用 os 类 import os; os.system("ls /");

随机推荐

  1. 类似LCS,构成目标单词(POJ2192)

    题目链接:http://poj.org/problem?id=2192 解题报告: 1.类似最长公共子序列,dp[i][j]表示用s1前i个字符和s2前j个字符来构成目标单词的一部分,是否成功 2.状 ...

  2. 【转】Android UI开发第二十四篇——Action Bar

    Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为acti ...

  3. gearman安装实录

    花了5个小时装好了gearman,问题不断,坑爹的服务器yum还坏了,悲催. 服务器系统:centos5.3 64位 gearman版本:1.1.8 安装包(相关依赖)下载 1.gearman安装包 ...

  4. Spring详解篇之 AOP面向切面编程

    一.概述 Aop(aspect oriented programming面向切面编程),是spring框架的另一个特征.AOP包括切面.连接点.通知(advice).切入点(pointCut) . 1 ...

  5. Java删除文件或目录及目录下所有文件

    一直在做C++相关开发的工作.突然某一天一时兴起,想学习下Java开发.然后再网上找到一本Java简明教程,入门是够用了.看到文件IO这一章,想起之前用C++做的删除文件或目录的练习,于是打算用Jav ...

  6. UVa中国麻将(Chinese Mahjong,Uva 11210)

    简单的回溯题 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm ...

  7. poj_1845_Sumdiv

    Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S m ...

  8. JS - 把类似document.querySelectorAll(".xxx")、document.getElementsByName("xxx")这种方法的返回结果转换成数组对象

    var btns = document.querySelectorAll(".btn");console.log(btns instanceof Array); // falseb ...

  9. PTA 7-10(图) 旅游规划 最短路问题

    7-10(图) 旅游规划 (25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果 ...

  10. 前端各种mate积累

    <!DOCTYPE html> H5标准声明,使用 HTML5 doctype,不区分大小写 <head lang=”en”> 标准的 lang 属性写法 <meta c ...