我正在尝试将.mp4文件发送到mp4标记应用程序。我的问题是,每次拨打subprocess.call()
或subprocess.Popen()
时,都会在Windows上生成新进程。
我想要的是在流程已经运行的情况下在现有流程中打开文件...这可能还是取决于被调用流程如何处理新流程调用?
这就是我所拥有的:
def sendToTagger(self, file):
msg = "-- " + self.getDateStamp() + "-- Sending " + os.path.basename(file) + " to Tagger...\r\n"
self.logFile.write(msg)
print(msg)
p = subprocess.Popen(['C:\\Program Files (x86)\\Tagger\\Tagger.exe', file], shell=False, stdin=None, stdout=None)
答案 0 :(得分:1)
它必须生成一个新进程,因为您调用的外部命令不是python代码的本机命令。但是,如果您希望通过调用p.wait()
等待进程完成,则可以答案 1 :(得分:0)
subprocess.Popen总是打开一个新进程(这就是它的目的)。您需要确定Tagger.exe如何允许其他程序以编程方式请求它打开新文件。在最简单的情况下,您可以通过stdin与它进行简单的通信(其中您需要将stdin和stdout设置为PIPE)。但是,您的程序可能需要一些其他的进程间通信方法(IPC)。比如套接字,共享内存等。我不熟悉Windows上的方法,但如果Tagger是一个图形程序,你很可能需要做一些更复杂的事情。