我一直在玩弄 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/