当前位置: 首页 > 面试题库 >

与python的bash交互

唐高卓
2023-03-14
问题内容

我一直在研究Python的subprocess模块,我想使用python的bash进行“交互式会话”。我希望能够像在终端模拟器上一样从Python读取bash输出/写入命令。我猜一个代码示例可以更好地解释它:

>>> proc = subprocess.Popen(['/bin/bash'])
>>> proc.communicate()
('user@machine:~/','')
>>> proc.communicate('ls\n')
('file1 file2 file3','')

(显然,这种方式行不通。)是否可能出现这种情况,怎么办?

非常感谢


问题答案:

请尝试以下示例:

import subprocess

proc = subprocess.Popen(['/bin/bash'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout = proc.communicate('ls -lash')

print stdout

您必须阅读有关stdin,stdout和stderr的更多信息。看起来不错的演讲:http://www.doughellmann.com/PyMOTW/subprocess/

编辑:

另一个例子:

>>> process = subprocess.Popen(['/bin/bash'], shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
>>> process.stdin.write('echo it works!\n')
>>> process.stdout.readline()
'it works!\n'
>>> process.stdin.write('date\n')
>>> process.stdout.readline()
'wto, 13 mar 2012, 17:25:35 CET\n'
>>>


 类似资料:
  • 问题内容: 我需要使用自己的专用TTY在Python的单独进程中运行交互式Bash实例(我不能使用pexpect)。我使用了类似程序中常见的代码片段: 但是当我运行它时,我得到以下输出: 运行的轨迹显示一些错误: 该代码段看起来非常简单,Bash是否没有得到所需的东西?这可能是什么问题? 问题答案: 这是最后对我有用的解决方案(由qarma建议):

  • 购买了一款产品,使我们的用户能够通过HTTP发送/接收SMS。现在,我的工作是将其构建到我们当前的CMS平台中 以下是我试图发送的特定POST请求的文档:POST:发送SMS消息 这是我的简单python程序来测试功能。我得到一个通用的500内部服务器错误响应。我做错了什么?

  • 我在windows上下载了git,还有一些其他东西,包括GitBash。 虽然我不知道为什么bash终端被包含在“git”中,但它不仅支持git的功能,还支持其他功能,比如mkdir、cp、mv,就像一个真正的linux bash终端一样。 最近我知道了WSL(WindowsLinux子系统),它使bash终端在windows中可用。 git bash在功能上是否不如WSL? 它是否包含一些WSL

  • 本文向大家介绍Python(Django)项目与Apache的管理交互的方法,包括了Python(Django)项目与Apache的管理交互的方法的使用技巧和注意事项,需要的朋友参考一下 准备:Django的环境(Python)、Apache、Wsgi(必须文件) 首先需要电脑有Python基础下并且安装好Django的环境,下载Apache文件和Wsgi文件。 Apache HTTP Serve

  • 问题内容: 我有两个字符串,我想在它们的交点 包括 重复项: 我希望它返回: 有任何想法吗? 问题答案: 多集在python 2.7或更高版本中作为(可变)对象实现。您可以对集合执行许多相同的操作,例如联合,相交,差(尽管计数可能变为负数)等: 解: 更多细节: 您可以使用想要的字符串还是列表,尽管我只是将其保留为可迭代的格式。

  • 我有4个片段的viewpager2。其中3个具有SwipeRefreshLayout以刷新特定片段中的异步任务数据。 当使用SwipeRefreshLayout和viewpager2时,手势在某种程度上是相互冲突的。例如,swype down to refresh(向下键入以刷新)使屏幕非常敏感,向左或向右移动一点也会使页面屏幕发生变化,刷新图标冻结或进程未完成。 我的目标是使手势独立,例如,当我