概述
考虑这样一个问题,有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!
整合代码如下:
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]
<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>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
下面我来逐步讲解一下shell的交互方式。 hello.py代码如下: 复制代码 代码如下: #!/usr/bin/python print “hello, world!” TestInput.py代码如下: 复制代码 代码如下: #!/usr/bin/python str = raw_input()
1. **使用 os 模块**:Python 的 `os` 模块提供了一系列用于与操作系统交互的函数。例如,`os.system()` 函数可以用来执行 Shell 命令。 ```python import os os.system("ls -l") ``` 2. **文件和目录操作**...
### Python 获取交互式SSH Shell的方法 #### 概述 本文主要介绍了如何利用Python语言实现与远程服务器进行交互式SSH连接的方法。通过两种不同的方法来进行演示:一种是通过基础的进程控制来模拟SSH命令的执行;另...
ShellPy 是一款Python和Shell的交互工具。一般来说,我们会通过Subprocess、Popen或者Command模块执行一条Shell命令或脚本,然后通过返回的标准输出和错误输出来得到结果,这个可行但不直观。ShellPy直观的解决了这...
本项目为基于D2L-ZH框架的Python与Shell语言交互设计源码,总计包含653个文件,涵盖223个SVG图形文件、188个PNG图片文件、175个Markdown文档、35个JPG图片文件、12个Python源文件、3个GIF动画文件、2个INI配置文件、...
1. **Python中的os模块**:`os`是Python的标准库之一,提供了与操作系统交互的接口,包括文件路径处理、进程管理等功能。 2. **Shell命令**:Shell是计算机操作系统中用户与内核之间的一个接口层,通过Shell可以执行...
在Python中,`os`模块提供了一系列与操作系统交互的接口,其中包括`system`函数,它允许我们直接执行Shell命令。此方法简单易用,但功能较为有限。 ```python import os # 执行`ls -al`命令并打印状态码 val = os....
Paramiko库是Python中的一个SSH(Secure Shell)客户端和服务器实现,它提供了在Windows上与远程Linux系统进行安全通信的能力。通过Paramiko,我们可以执行命令、传输文件、管理用户权限等。 Paramiko库的核心概念...
在Python中,可以使用`os`和`subprocess`模块与shell交互。 1. **os模块**:提供了一系列与操作系统交互的函数,如`os.system()`可以执行shell命令,`os.listdir()`获取目录中的文件名,`os.mkdir()`创建目录等。 ...
该项目为基于Python与Shell开发的reflective-clothes-detect设计源码,共包含41个文件,其中包括14个yaml配置文件、14个Python源代码文件、5个JPEG图片文件、4个Shell脚本文件、1个Markdown文件、1个Python交互式...
总之,Python简易Shell是一个方便的工具,它提供了与Python解释器相似的交互体验,但可以根据需求进行定制和扩展。通过理解和构建这样的Shell,不仅可以深入理解Python的运行机制,还可以提升编程技巧和解决问题的...
Python Shell,也称为交互式解释器,是Python编程语言提供的一种命令行接口,允许程序员在运行时逐行输入代码并立即执行。它是学习和测试Python语法、函数以及快速实验代码片段的理想工具。在这个环境中,你可以直接...
Python执行shell命令并将结果保存的实例涉及到了Python编程中与系统交互的一个重要方面。在软件开发和系统管理中,经常需要从Python程序中调用系统的shell命令,并将这些命令的输出用作进一步的处理。本文将详细介绍...
**Python-基于现有KafkaCLI工具构建的增压交互式Kafkashell** 在大数据处理领域,Apache Kafka是一款广泛使用的分布式流处理平台,它允许应用程序以高吞吐量、低延迟的方式处理实时数据流。Kafka CLI(命令行界面)...
概述 ...下面我来逐步讲解一下shell的交互方式。 hello.py代码如下: #!/usr/bin/python print "hello, world!" TestInput.py代码如下: #!/usr/bin/python str = raw_input() print("input strin
Python拥有大量的第三方库,如`os`、`sys`、`subprocess`用于系统交互,`argparse`用于命令行参数解析,`shutil`用于文件和目录操作。这些库可以帮助我们快速实现各种复杂功能,而Bash脚本往往需要调用多个外部命令...
该项目为智慧药房智能小车挑战赛设计源码,采用Python和Shell语言编写,包含197个文件,涵盖77个yaml配置文件、53个Python源代码文件、28个Python测试文件、9个Shell脚本文件、7个Markdown文档、5个zip压缩文件、3个...
它试图提供使shell命令以强大而直观的方式与python代码交互的方法。 安装与测试 python -m pip install pipepy 或者,如果您想在尝试时修改代码: git clone https://github.com/kbairak/pipepy cd pipepy