`
Ydoing
  • 浏览: 106129 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Python与shell的交互方式

 
阅读更多

概述

考虑这样一个问题,有hello.py脚本,输出”hello, world!”;有TestInput.py脚本,等待用户输入,然后打印用户输入的数据。那么,怎么样把hello.py输出内容发送给TestInput.py,最后TestInput.py打印接收到的”hello, world!”。下面我来逐步讲解一下shell的交互方式。

hello.py代码如下:

#!/usr/bin/python
print "hello, world!"

TestInput.py代码如下:

#!/usr/bin/python
str = raw_input()
print("input string is: %s" % str)

1.os.system(cmd)

这种方式只是执行shell命令,返回一个返回码(0表示执行成功,否则表示失败)

retcode = os.system("python hello.py")
print("retcode is: %s" % retcode);

输出:

hello, world!
retcode is: 0

2.os.popen(cmd)

执行命令并返回该执行命令程序的输入流或输出流.该命令只能操作单向流,与shell命令单向交互,不能双向交互.

返回程序输出流,用fouput变量连接到输出流

fouput = os.popen("python hello.py")
result = fouput.readlines()
print("result is: %s" % result);

输出:

result is: ['hello, world!\n']

返回输入流,用finput变量连接到输出流

finput = os.popen("python TestInput.py", "w")
finput.write("how are you\n")

输出:

input string is: how are you

3.利用subprocess模块

subprocess.call()

类似os.system(),注意这里的”shell=True”表示用shell执行命令,而不是用默认的os.execvp()执行.

f = call("python hello.py", shell=True)
print f

输出:

hello, world!
0

subprocess.Popen()

利用Popen可以是实现双向流的通信,可以将一个程序的输出流发送到另外一个程序的输入流.
Popen()是Popen类的构造函数,communicate()返回元组(stdoutdata, stderrdata).

p1 = Popen("python hello.py", stdin = None, stdout = PIPE, shell=True)
p2 = Popen("python TestInput.py", stdin = p1.stdout, stdout = PIPE, shell=True)
print p2.communicate()[0]
#other way
#print p2.stdout.readlines()

输出:

input string is: hello, world!

整合代码如下:

#!/usr/bin/python
import os
from subprocess import Popen, PIPE, call

retcode = os.system("python hello.py")
print("retcode is: %s" % retcode);

fouput = os.popen("python hello.py")
result = fouput.readlines()
print("result is: %s" % result);

finput = os.popen("python TestInput.py", "w")
finput.write("how are you\n")


f = call("python hello.py", shell=True)
print f

p1 = Popen("python hello.py", stdin = None, stdout = PIPE, shell=True)

p2 = Popen("python TestInput.py", stdin = p1.stdout, stdout = PIPE, shell=True)
print p2.communicate()[0]
#other way
#print p2.stdout.readlines()
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

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

分享到:
评论

相关推荐

    Python与shell的3种交互方式介绍

    下面我来逐步讲解一下shell的交互方式。 hello.py代码如下: 复制代码 代码如下: #!/usr/bin/python print “hello, world!” TestInput.py代码如下: 复制代码 代码如下: #!/usr/bin/python str = raw_input()

    python编写shell脚本

    1. **使用 os 模块**:Python 的 `os` 模块提供了一系列用于与操作系统交互的函数。例如,`os.system()` 函数可以用来执行 Shell 命令。 ```python import os os.system("ls -l") ``` 2. **文件和目录操作**...

    python获取交互式ssh shell的方法

    ### Python 获取交互式SSH Shell的方法 #### 概述 本文主要介绍了如何利用Python语言实现与远程服务器进行交互式SSH连接的方法。通过两种不同的方法来进行演示:一种是通过基础的进程控制来模拟SSH命令的执行;另...

    Python和Shell交互工具ShellPy.zip

    ShellPy 是一款Python和Shell的交互工具。一般来说,我们会通过Subprocess、Popen或者Command模块执行一条Shell命令或脚本,然后通过返回的标准输出和错误输出来得到结果,这个可行但不直观。ShellPy直观的解决了这...

    基于D2L-ZH的Python与Shell语言交互设计源码

    本项目为基于D2L-ZH框架的Python与Shell语言交互设计源码,总计包含653个文件,涵盖223个SVG图形文件、188个PNG图片文件、175个Markdown文档、35个JPG图片文件、12个Python源文件、3个GIF动画文件、2个INI配置文件、...

    python调用shell命令

    1. **Python中的os模块**:`os`是Python的标准库之一,提供了与操作系统交互的接口,包括文件路径处理、进程管理等功能。 2. **Shell命令**:Shell是计算机操作系统中用户与内核之间的一个接口层,通过Shell可以执行...

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

    在Python中,`os`模块提供了一系列与操作系统交互的接口,其中包括`system`函数,它允许我们直接执行Shell命令。此方法简单易用,但功能较为有限。 ```python import os # 执行`ls -al`命令并打印状态码 val = os....

    windows环境下python与linux交互

    Paramiko库是Python中的一个SSH(Secure Shell)客户端和服务器实现,它提供了在Windows上与远程Linux系统进行安全通信的能力。通过Paramiko,我们可以执行命令、传输文件、管理用户权限等。 Paramiko库的核心概念...

    python shell

    在Python中,可以使用`os`和`subprocess`模块与shell交互。 1. **os模块**:提供了一系列与操作系统交互的函数,如`os.system()`可以执行shell命令,`os.listdir()`获取目录中的文件名,`os.mkdir()`创建目录等。 ...

    基于Python与Shell的reflective-clothes-detect设计源码,涵盖反光衣与安全帽检测数据集

    该项目为基于Python与Shell开发的reflective-clothes-detect设计源码,共包含41个文件,其中包括14个yaml配置文件、14个Python源代码文件、5个JPEG图片文件、4个Shell脚本文件、1个Markdown文件、1个Python交互式...

    Python 简易Shell.zip

    总之,Python简易Shell是一个方便的工具,它提供了与Python解释器相似的交互体验,但可以根据需求进行定制和扩展。通过理解和构建这样的Shell,不仅可以深入理解Python的运行机制,还可以提升编程技巧和解决问题的...

    python shell 用法

    Python Shell,也称为交互式解释器,是Python编程语言提供的一种命令行接口,允许程序员在运行时逐行输入代码并立即执行。它是学习和测试Python语法、函数以及快速实验代码片段的理想工具。在这个环境中,你可以直接...

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

    Python执行shell命令并将结果保存的实例涉及到了Python编程中与系统交互的一个重要方面。在软件开发和系统管理中,经常需要从Python程序中调用系统的shell命令,并将这些命令的输出用作进一步的处理。本文将详细介绍...

    Python-基于现有KafkaCLI工具构建的增压交互式Kafkashell

    **Python-基于现有KafkaCLI工具构建的增压交互式Kafkashell** 在大数据处理领域,Apache Kafka是一款广泛使用的分布式流处理平台,它允许应用程序以高吞吐量、低延迟的方式处理实时数据流。Kafka CLI(命令行界面)...

    举例讲解Python程序与系统shell交互的方式

    概述 ...下面我来逐步讲解一下shell的交互方式。 hello.py代码如下: #!/usr/bin/python print "hello, world!" TestInput.py代码如下: #!/usr/bin/python str = raw_input() print("input strin

    Python-何用Python代替Bash脚本指南

    Python拥有大量的第三方库,如`os`、`sys`、`subprocess`用于系统交互,`argparse`用于命令行参数解析,`shutil`用于文件和目录操作。这些库可以帮助我们快速实现各种复杂功能,而Bash脚本往往需要调用多个外部命令...

    基于Python与Shell的智慧药房智能小车挑战赛设计源码

    该项目为智慧药房智能小车挑战赛设计源码,采用Python和Shell语言编写,包含197个文件,涵盖77个yaml配置文件、53个Python源代码文件、28个Python测试文件、9个Shell脚本文件、7个Markdown文档、5个zip压缩文件、3个...

    pipepy:用于调用shell命令并与之交互的Python库

    它试图提供使shell命令以强大而直观的方式与python代码交互的方法。 安装与测试 python -m pip install pipepy 或者,如果您想在尝试时修改代码: git clone https://github.com/kbairak/pipepy cd pipepy

Global site tag (gtag.js) - Google Analytics