从Python

时间:2016-04-14 22:07:48

标签: python windows

我正在尝试在Windows中自动执行一些繁琐的命令行。

我需要打开Zookeeper服务器的实例,然后打开一个新的命令提示符并打开Apache Kafka服务器的实例。我希望能够打开新的命令提示符窗口并对它们执行新命令。

将此与我在StackOverflow上发现的其他查询区别开来的是,我需要同时运行所有这些进程。我需要Zookeeper和Kafka服务器都是活动的。

因此,例如,此代码失败。

os.system (ZOOKEEPER_START_SERVER + ' ' + ZOOKEEPER_CONFIG)
os.system (KAFKA_START_SERVER + ' ' + KAFKA_SERVER_CONFIG)

启动Zookeeper服务器,但由于服务器在后台无限期运行,程序会挂起。

我需要在新的命令提示符下以某种方式打开Kafka服务器,理想情况下继续运行我的Python脚本,根据需要打开新窗口以访问Kafka服务器的内容。

我可以通过在方法中放置上述两行,手动以交互模式打开文件,执行相关功能,然后在新的命令窗口中重复来完成我想要的操作。

这对我目前的目的来说太乏味了,但我希望它能让问题更加清晰。

我希望我已经清楚了。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

你有几个选择。你可以尝试:

import subprocess
subprocess.Popen([ZOOKEEPER_START_SERVER, ZOOKEEPER_CONFIG], creationflags=subprocess.CREATE_NEW_CONSOLE)

或者您可以使用start command

答案 1 :(得分:0)

如果您只是想让用户与windows进行交互:

import subprocess
subprocess.call('cmd /C "start (' + ZOOKEEPER_START_SERVER + ' ' + ZOOKEEPER_CONFIG + ')"')
subprocess.call('cmd /C "start (' + KAFKA_START_SERVER + ' ' + KAFKA_SERVER_CONFIG + ')"')

如果您希望以编程方式与窗口进行互动,则需要将subprocess.Popen与管道一起使用,您可以在Python manual中阅读这些内容。