【问题标题】:How to get terminal output?如何获得终端输出?
【发布时间】:2013-03-22 02:09:51
【问题描述】:

背景

作为一个有趣的项目,我决定为我的新树莓派创建一个远程控制应用程序。我知道如何使用 SSH,但我想在 Python 中实现类似的东西。如何让打印到终端上的文本显示在我的 Python shell 中?

我查看了this SO question,但没有成功。没有工作,我的意思是我无法看到输出文本。如果我输入passwd,它只会给我

Changing password for User.

但它没有给我交互式会话。 是我想要弄清楚的。

注意:我的 Raspberry Pi 在“Wheezy”上运行。此外,如果该程序可以与其他操作系统(如 Windows 7、Mac OS X)一起使用,那就太好了。

代码

import subprocess
import socket
import sys
import platform
import os

print "WELCOME TO xTROL. \n"

pyVER = sys.version
OS = platform.system()

print pyVER, "\n"
print "Running on %s" % (OS)
while True:
    INPUT = raw_input(">>>")
    cmd_FORMAT = INPUT.split()

    try:
        output = subprocess.Popen(cmd_FORMAT, stdout=subprocess.PIPE).communicate()[0]
        print output
    except Exception:
        print "Something went wrong."

【问题讨论】:

  • 你说的“但是没有用”是什么意思?
  • 你能告诉我们你在做什么,以便我们帮助诊断吗?
  • cmd 未在此代码中定义。否则,除非您的命令在标准输出中没有输出任何内容,否则它应该可以工作。
  • 对我来说它适用于简单的命令(当然通过将 cmd_FORMAT 更改为 cmd),但我认为它有复杂命令行的错误。您可以向我们展示您尝试运行的命令是什么。
  • 是的,这是意料之中的。交互式程序不能以这种方式工作。

标签: python subprocess raspberry-pi


【解决方案1】:

如果你想写 SSH 之类的东西,你必须做一个伪终端。看the pty module

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-04
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    相关资源
    最近更新 更多