python - 从 python 与 bash 交互

标签 python bash subprocess

我一直在玩弄 Python 的 subprocess 模块,我想用 python 的 bash 做一个“交互式 session ”。我希望能够像在终端仿真器上一样从 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'
>>> 

关于python - 从 python 与 bash 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9673730/

相关文章:

python - 线程化/生成多个操作系统命令并在不同点获取输出的最佳方法

python - 预期交互式解析失败?

python - 使用izip在python中同时从两个文件中读取行

python - PyDev 交互式控制台未启动

python - 如何在databricks上运行python3?

Bash getopts 删除最后一个参数

linux - 随机运行 Bash 脚本

bash - Istanbul-tools 安装错误 : github. com/ethereum/go-ethereum/crypto/bn256/cloudflare.gfpMul : relocation target runtime. support_bmi2 not defined

python - 如何让我的 python 应用程序在继续之前等待某个子进程

Python 在没有 shell=false 和数组中的变量的情况下使用子进程时出错