PHP执行Python脚本:提示输入,读取多个输出

时间:2016-05-12 00:02:24

标签: php python

我有一个Python脚本,提示用户输入。

input = raw_input("Enter input file: ")
model = raw_input("Enter model file: ")

虽然我可以使用以下PHP命令来执行脚本,但如何在提示时提供输入?

$output = shell_exec("python script.py");

此外,与shell_exec()一样,我想返回所有输出行,而不仅仅是打印的第一行/最后一行。

有效的解决方案:

$descriptorspec = array(
    0 => array("pipe", "r"), 
    1 => array("pipe", "w")
);  
$process = proc_open('python files/script.py', $descriptorspec, $pipes, null, null); // run script.py
if (is_resource($process)) {
    fwrite($pipes[0], "files/input.txt\n"); // input 1      
    fwrite($pipes[0], "files/model.txt\n"); // input 2

    fclose($pipes[0]); // has to be closed before reading output!
    $output = "";
    while (!feof($pipes[1])) {
        $output .= fgets($pipes[1]);
    }
    fclose($pipes[1]);
    proc_close($process);  // stop script.py
    echo ($output);
}

参考: Piping between processes in PHP

0 个答案:

没有答案