【问题标题】:Python with shell Command interactionPython 与 shell 命令交互
【发布时间】:2013-07-08 19:59:11
【问题描述】:

我正在尝试与多个 shell 程序进行交互,该程序一个用 python 编写,另一个用 perl 编写,另一个用 ruby​​ 编写。

认为他们运行的终端就像命令一样简单

$python demo.py

Option1
Option2
Option3
Option4

app1>1

#Menu 1 options
Option1 from menu 1
Option2 from menu 1
Option3 from menu 1
Option4 from menu 1

app1>2

#Option 2 from menu1 options
Option2.1 from menu 1
Option2.2 from menu 1
Option2.3 from menu 1
Option2.4 from menu 1

app1>2

所有 3 个应用程序运行几乎相同,但我尝试使用 php shell_exec 命令、python OS 模块,但没有人能够与程序的子菜单和工作流程进行交互...

我可以跑了:

 import os   
 list = os.popen('pwd').read()
 print list

<?php shell_exec(´ls -las´)?>

有没有人有将没有 GUI 界面的 Shell 程序迁移到 gui Web 界面的经验? (我正在考虑制作一个与这些程序交互的包装器)

【问题讨论】:

    标签: python linux shell subprocess


    【解决方案1】:

    您将需要使用 subprocess 模块 来创建子流程,然后使用 interact 方法或 .stdin 和 .stdout 属性(它们是文件类对象)。

    您必须在 subprocess.Popen 调用中传递 stdin=subprocess.PIPE 和 stdout=subprocess.PIPE,否则您将无法交互。

    如果你想将它绑定到网络应用或其他东西,你还必须让它在“后台”运行,以便用户可以在多个 HTTP 请求期间与程序交互。

    【讨论】:

    • 你有任何例子或代码来看看 subprocess 是如何工作的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2014-02-10
    • 1970-01-01
    • 2016-05-29
    • 2012-07-03
    • 1970-01-01
    相关资源
    最近更新 更多