python学习之--调用shell脚本

原创 2015年07月10日 15:56:06

python调用Shell脚本,有很多种方法,下面给出了三个python中执行shell命令的方法

第一种方案:os.system

os.system返回脚本的退出状态码

现有一个shell脚本1.sh

#!/bin/sh
echo "hello world!!"
在python中调用shell脚本

import os

status = os.system('sh ~/svnrepos/1.sh')

print status

print status>>8

修改shell脚本,让脚本退出时返回状态码3


运行的结果为:

该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码。

返回的结果都是0(使用位运算向右位移8位得到的结果就是高位值),代表代码正常退出。

我们如果需要的到脚本执行后返回的状态码,可以使用位运算得到。


第二种方案:os.popen

这种调用方法是通过管道的方式来实现的,函数返回一个file-like的对象,里面的内容是脚本输出的内容(可以简单的理解为echo的输出内容)

通过编写的shell脚本1.sh来尝试





第三种方案:使用commands模块

有三个函数:

1.commands.getstatusoutput(cmd)

使用os.popen()执行命令cmd,然后返回两个元素的元组(status, result)

cmd的执行方式是{cmd;} 2>&1,这样返回结果里面就包含了标准输出和标准错误

2.commands.getoutput(cmd)

只返回执行的结果,忽略返回值

3.commands.getstatus(file)

返回值

例子:



以上的调用方式根据实际的需要来选择对应的方式








版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

python 执行sh脚本文件

cmd = '/users/xxx/.../xx.sh' # 全路径或者./相对路径 import subprocess p = subprocess.Popen(cmd, shell=True, s...
  • vinrex
  • vinrex
  • 2014-04-01 15:54
  • 5822

Python学习之路(1)--python运行三种方式

第一个python程序,三种不同的运行方式

python脚本的两种调用方式

1、python脚本中经常第一句出现#!/usr/bin/env python或#!/usr/bin/python。这句话的意义下面解释: 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码...

python调用shell脚本

python调用shell脚本跟python调用shell命令类似,具体可参考文章: http://blog.csdn.net/shanliangliuxing/article/details/88...

makefile太难了,学不会,自己用Python写个简单的构建工具

makefile 太复杂了,学的不精。自己用Python写一个构建工具 基本用法: 创建buildconfig文件 pymake -c 构建 pymake 清理 pymake clean 帮助...

python 调用shell命令三种方法

1.用os.system(cmd)   不过取不了返回值 2.用os.popen(cmd)   要得到命令的输出内容,只需再调用下read()或readlines()等 如a=os.popen(cm...

Python下调用Linux的Shell命令

有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的。那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块...

python执行shell命令的几种方法

目前我使用到的python中执行cmd的方式有三种: 1. 使用os.system("cmd") 这是最简单的一种方法,特点是执行的时候程序会打出cmd在Linux上执行的信息。使用前需要...

python子进程模块subprocess详解与应用实例 之一

subprocess--子进程管理器​ 一、subprocess 模块简介 subprocess最早是在2.4版本中引入的。 subprocess模块用来生成子进程,并可以通过管道连接它们的...

Python模块subprocess小记

在熟悉了Qt的QProcess以后,再回头来看python的subprocess总算不觉得像以前那么恐怖了。 和QProcess一样,subprocess的目标是启动一个新的进程并与之进行通讯。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)