我正在尝试在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服务器的内容。
我可以通过在方法中放置上述两行,手动以交互模式打开文件,执行相关功能,然后在新的命令窗口中重复来完成我想要的操作。
这对我目前的目的来说太乏味了,但我希望它能让问题更加清晰。
我希望我已经清楚了。谢谢你的帮助!
答案 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中阅读这些内容。