我正在尝试在Windows中自动化一些乏味的命令行使用。
我需要打开Zookeeper服务器的一个实例,然后打开一个新的命令提示符,并打开ApacheKafka服务器的实例。我希望能够打开新的命令提示符窗口并在它们上执行新命令。
这与我在StackOverflow上发现的其他查询的区别在于,我需要所有这些进程同时运行。我需要Zookeeper和Kafka服务器都处于活动状态。
因此,例如,此代码失败。
os.system (ZOOKEEPER_START_SERVER + ' ' + ZOOKEEPER_CONFIG)
os.system (KAFKA_START_SERVER + ' ' + KAFKA_SERVER_CONFIG)
它启动Zookeeper服务器,但由于服务器在后台无限期运行,程序挂起。
我需要在一个新的命令提示符中以某种方式打开Kafka服务器,理想情况下继续运行我的Python脚本,根据需要打开新的窗口来访问Kafka server的内容。
我可以通过将以上两行放入方法中,在交互模式下手动打开文件,执行相关函数,然后在新的命令窗口中重复,来完成我想要的操作。
这对我目前的目的来说太乏味了,但我希望它能让问题变得更清楚。
我希望我已经说清楚了。谢谢你的帮助!
您有几个选项。你可以试试:
import subprocess
subprocess.Popen([ZOOKEEPER_START_SERVER, ZOOKEEPER_CONFIG], creationflags=subprocess.CREATE_NEW_CONSOLE)
或者,您可以使用start命令。
如果您只想允许用户与窗口交互:
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手册中阅读这些内容。