gpt4 book ai didi

python - 从我的 python 脚本运行 perl 脚本,打印输出并等待它完成

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:29 25 4
gpt4 key购买 nike

我有一个 python 脚本,有时需要它来运行 perl 脚本,等待它完成,然后继续。

由于这种情况只会发生在 Windows 机器上,我想我可以简单地打开一个新的 cmd 并在那里运行 perl 脚本,但我在这样做时遇到了困难。

import os

os.system("start /wait cmd /c {timeout 10}")

应该打开一个新的 cmd 并休眠 10 秒,但它会立即关闭。我不想将 perl 脚本放在 timeout 10 的位置,因为它非常耗费资源。另一个想法是使用带有callPopenwaitsubprocess

perl_script = subprocess.call(['script.pl', params])

但我不确定在这种情况下 perl 脚本的标准输出会发生什么情况。

我知道 perl 脚本的位置和参数。

我如何从我的 python 脚本运行 perl 脚本,打印输出(很多)并等待它完成?

编辑:

按照@rchang 的建议,我添加了 subprocesscommunicate 如下,它按预期工作。

import subprocess, sys

perl = "C:\\perl\\bin\\perl.exe"
perl_script "C:\\scripts\\perl\\flamethrower.pl"
params = " --mount-doom-hot"

pl_script = subprocess.Popen([perl, perl_script, params], stdout=sys.stdout)
pl_script.communicate()

这些是我的第一行 perl,只是一个快速复制/粘贴脚本来测试它。

print "Hello Perld!\n";
sleep 10;
print "Bye Perld!\n";

最佳答案

import subprocess
import sys

perl_script = subprocess.Popen(["script.pl", params], stdout=sys.stdout)
perl_script.communicate()

这应该将子进程的标准输出连接到 Python 脚本的标准输出流,前提是您实际上不需要 Python 脚本在执行期间输出可能与子进程输出无关的任何其他有意义的内容。

关于python - 从我的 python 脚本运行 perl 脚本,打印输出并等待它完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27381382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com