python执行外部程序的常用方法小结

本文实例总结了python执行外部程序的常用方法。分享给大家供大家参考。具体分析如下:

在python中我们可以通过下面的方法直接调用系统命令或者外部程序,使用方便

1、os模块的execl方法

Python的execl系统方法同Unix的exec系统调用是一致的。这些方法适用于在子进程中调用外部程序的情况,因为外部程序会替换当前进程的代码,不会返回。
也就是说,这个shell进程被占领,将执行第一个execl的命令程序而不再返回。

2、使用os模块的system方法

system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果。这个方法比较适用于外部程序没有输出结果的情况。比如在Ubuntu下,使用下面命令在桌面上显示一条提示信息。
根据我的实验,用system方法调用的进程正常结束返回0,异常结束返回非0,而不取决于进程主函数的返回值。

3、使用os模块的popen方法

当需要得到外部程序的输出结果时,本方法非常有用。比如使用urllib调用Web API时,需要对得到的数据进行处理。一个使用例子如下:

cmd = "ssh search47c.cm2 \"" + query + "\""
#print cmd + "<br>"
output = os.popen(cmd)
#对特殊字符进行转义
temp1 = output.read().replace('<','<')
temp2 = temp1.replace('>', ">")
temp3 = temp2.replace('\n', "<br>")
print temp3.replace('/', "&#47")

4、使用commands模块的getoutput方法(没用过)

这种方法同popend的区别在于popen返回的是一个文件句柄,而本方法将外部程序的输出结果当作字符串返回,很多情况下用起来要更方便些。

希望本文所述对大家的Python程序设计有所帮助。

(0)

相关推荐

  • 在win和Linux系统中python命令行运行的不同

    今天,在完成一个小的python习题,习题的主要内容是读取一个帮助模块,并保存到本地文件. 知道是用pydoc进行模块的读取,但是在windows系统下,调用os模块之后,结果总是为空. 核心语句: helpfile = os.popen('pydoc %s' %module).read() 此语句在Linux下可以正常运行,结果正常. 后来发现,在Windows下,该修改为: helpfile = os.popen('python -m pydoc %s' %module).read() 命令

  • python脚本内运行linux命令的方法

    本文实例讲述了python脚本内运行linux命令的方法.分享给大家供大家参考.具体实现方法如下: #/usr/bin/env python import subprocess class RunCmd(object): def cmd_run(self, cmd): self.cmd = cmd subprocess.call(self.cmd, shell=True) #Sample usage a = RunCmd() a.cmd_run('ls -l') 希望本文所述对大家的Python

  • python嵌套函数使用外部函数变量的方法(Python2和Python3)

    python嵌套函数使用外部函数变量的方法,Python2和Python3均可使用 python3 def b(): b = 1 def bchange(): nonlocal b b += 1 bchange() print(b) Python 2 只能这样(利用 mutable 对象): def b(): b = [1] def bchange(): b[0] += 1 bchange() print b[0]

  • python运行其他程序的实现方法

    python运行其他程序的实现方法              这里提供了两种实现方法,一.os.system()函数和 使用ShellExecute函数运行其他程序及实现代码,大家可以参考下, 一 使用os.system()函数运行其他程序 打开系统的记事本程序 >>>import os >>> os.system('notepad') 0 >>> os.system('notepad python.txt') 0 二 使用ShellExecute函数

  • python自动化测试之从命令行运行测试用例with verbosity

    本文实例讲述了python自动化测试之从命令行运行测试用例with verbosity,分享给大家供大家参考.具体如下: 实例文件recipe3.py如下: class RomanNumeralConverter(object): def __init__(self, roman_numeral): self.roman_numeral = roman_numeral self.digit_map = {"M":1000, "D":500, "C"

  • python实现调用其他python脚本的方法

    本文实例讲述了python实现调用其他python脚本的方法,分享给大家供大家参考.具体方法如下: 该实例调用当前目录下的md5get.py脚本.代码如下: import os import logging import subprocess log = logging.getLogger("Core.Analysis.Processing") INTERPRETER = "/usr/bin/python" if not os.path.exists(INTERPR

  • python引入导入自定义模块和外部文件的实例

    项目中想使用以前的代码,或者什么样的需求致使你需要导入外部的包 如果是web 下,比如说django ,那么你新建一个app,把你需要导入的说用东东,都写到这个app中,然后在setting中的app也配上基本就ok了 如果是本地代码,可以有几种方式, 1.这种最简单,也可能最不实用,将你的外部文件放到跟需要调用外部文件的文件同一个包下,同一目录 folder ------toinvoke.py ------tobeinvoded.py 这样在toinvoke.py 中引入 import tov

  • Python中在脚本中引用其他文件函数的实现方法

    在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址.所以如果要在当前脚本引用其他文件,除了将文件放在和脚本同一目录下,还有以下几种方法, 1. 将文件所在位置添加到sys.path中 import sys sys.path.insert(0, '/path/to/application/app/folder') # or sys.path.append('/path/to/application/a

  • Python实现运行其他程序的四种方式实例分析

    本文实例讲述了Python实现运行其他程序的四种方式.分享给大家供大家参考,具体如下: 在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32process模块中的函数,如果想进一步控制进程,则可以使用ctype模块,直接调用kernel32.dll中的函数. [方式一]使用os.system()函数运行其他程序 os模块中的system()函数可以方便地运行

  • python执行外部程序的常用方法小结

    本文实例总结了python执行外部程序的常用方法.分享给大家供大家参考.具体分析如下: 在python中我们可以通过下面的方法直接调用系统命令或者外部程序,使用方便 1.os模块的execl方法 Python的execl系统方法同Unix的exec系统调用是一致的.这些方法适用于在子进程中调用外部程序的情况,因为外部程序会替换当前进程的代码,不会返回. 也就是说,这个shell进程被占领,将执行第一个execl的命令程序而不再返回. 2.使用os模块的system方法 system方法会创建子进

  • python 执行shell命令并将结果保存的实例

    方法1: 将shell执行的结果保存到字符串 def run_cmd(cmd): result_str='' process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) result_f = process.stdout error_f = process.stderr errors = error_f.read() if errors: pass result_str =

  • Python调用shell命令常用方法(4种)

    方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令不需要输出内容的场景. 举例说明: 1. 列举当前目录下的所有文件. import os val = os.system('ls -al') print val 没有找到时,sh返回的状态码是1,而适用python调用,返回的是:256 方法二.使用os.popen(),该方法以文件的形式返回she

  • Python学习之列表常用方法总结

    目录 列表(元组)基本操作符回顾 len()函数在列表与元组上的使用 列表(元组)之间的累加与乘法 in和notin在列表(元组)中的用法 列表常用方法 append()函数 insert()函数 count()函数 remove()函数 Python内置函数del reverse()函数 sort()函数 clear()函数 copy()函数 extend()函数 小练习:完成列表合并功能 列表(元组)基本操作符回顾 len()函数在列表与元组上的使用 示例如下: names = ['Neo'

  • 超详细的Python安装第三方库常用方法汇总

    目录 前言 安装方法 1. 通过pychram安装 2. pip安装大法 3. 下载whl文件到本地离线安装 3.1 补充 4.其他方法 4.1 Python官方的Pypi菜单 4.2 国内镜像源解决pip安装过慢的问题 小结 总结 前言 在pyhton的学习中,相信大家通常都会碰到第三方库的安装问题,这个问题对于很多初学者而言头疼不已.这里我做一些简单的总结,如何正确高效地安装第三方库,少走弯路(毕竟都是我亲自踩过的坑,所以特地来总结一下,方便以后回顾和总结)! 安装方法 1. 通过pychr

  • Python asyncio异步编程常见问题小结

    目录 一.asyncio编程简单示例 二.asyncio编程常见问题 三.报错原因及解决方案 今天继续给大家介绍Python相关知识,本文主要内容是Python asyncio异步编程常见问题. 一.asyncio编程简单示例 首先,我们来看一段简单的Python asyncio异步编程代码,相关代码如下所示: import asyncio async def fun(): print(1) await asyncio.sleep(2) print(2) return 3 async def m

  • python执行子进程实现进程间通信的方法

    本文实例讲述了python执行子进程实现进程间通信的方法.分享给大家供大家参考.具体实现方法如下: a.py: import subprocess, time subproc = subprocess.Popen(['c:\python31\python.exe', 'c:/b.py'], stdin=subprocess.PIPE, shell=True) time.sleep(0.5) print('start') subproc.stdin.write('data\n') subproc.

  • PHP实现执行外部程序的方法详解

    本文实例讲述了PHP实现执行外部程序的方法.分享给大家供大家参考,具体如下: 在一些特殊情况下,会使用PHP调用外部程序执行,比如:调用shell命令.shell脚本.可执行程序等等,今天在源码中了解了一下PHP执行外部程序的方法,借此机会顺便整理一下. 在源码中 exec.h文件中,列出了可调用外部程序的几个函数,蓝色框里的两个函数只是辅助作用,本文只对其他几个函数做介绍. 前提 1 PHP没有运行在安全模式,关掉安全模式,即:safe_mode = off 2 禁用函数列表 disable_

  • 采用Psyco实现python执行速度提高到与编译语言一样的水平

    本文实例讲述了采用Psyco实现python执行速度提高到与编译语言一样的水平的方法,分享给大家供大家参考.具体实现方法如下: 一.安装Psyco很简单,它有两种安装方式,一种是源码方式,一种是二进制码方式: 如果用源码方式安装,你需在源码的目录中调用python setup.py install命令编译生成psyco子目录,再把该子目录整个拷贝到python的site-packages目录下. 如果用二进制码方式安装,按这个网址列表中的python与psyco版本对应表下载合适的二进制文件,解

  • python执行等待程序直到第二天零点的方法

    本文实例讲述了python执行等待程序直到第二天零点的方法.分享给大家供大家参考.具体分析如下: 如果需要通过python每天凌晨定时执行执行程序,可以使用下面的代码进行等待操作,无论什么时候执行系统都会等待到第二天凌晨才执行后面的程序. def waitToTomorrow(): """Wait to tommorow 00:00 am""" tomorrow = datetime.datetime.replace(datetime.datet

随机推荐