Python与shell命令交互

时间:2013-07-08 19:59:12

标签: python linux shell subprocess

我试图与多个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界面? (我正在考虑制作一个与这个程序交互的包装器)

1 个答案:

答案 0 :(得分:0)

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

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

如果要将其绑定到Web应用程序或其他内容,则还必须让它在“后台”运行,以便用户可以在多个HTTP请求期间与程序进行交互。