在php中运行python脚本

时间:2015-02-04 15:33:07

标签: php python

我正在尝试在php中运行python脚本来测试文件读取,这样我就可以继续工作并做更多代码了。我试过一个小的txt文件和php文件,但python脚本的输出是一个空字符串。所有文件都在同一目录中,我在VISTA OS中使用XAMPP。

php文件

<?php

$validation= exec('python script.py juliodantas.txt') ;
echo $validation ;

var_dump($validation);

?>

python文件:(script.py)

#!C:\Python27\python.exe
print "Content-Type: text/html\n"

import sys
fich_input= sys.argv[1]

def test(fich):
    input_fil=open(fich,'r')
    s=''
    cont=0
    for line in input_fil:
        cont+=1
        s+=line
    return (line,cont)

test(fich_input)

txt文件是制表符格式文件(juliodantas.txt)

CAS微笑InchI Mol_name LAB机构物种Cell_type亚细胞Bio_target条件Asay_parameter观察Assay_ID菌株组织target_type值Unity比较Experimental_error
12233 535 2435d 3r5rg 4t4t 4t 4t34t4 4t4t4 4trgdf vgery4 345y4 grfbg gergh hj6yu wde kukl derj,.i gjyy htht5u thyt5 tht56 thtrj4yeg

php的输出:

string(0) ""

1 个答案:

答案 0 :(得分:1)

如果我引用manual for exec()

  

命令结果的最后一行。

您的Python程序打印出"Content-Type: text/html\n",因此其输出的最后一行是空行。

如果您希望程序的整个输出在变量中,请使用exec的第二个可选参数:

$validation = "";
exec('python script.py juliodantas.txt', $validation);

echo impode("\n", $validation); // should print "Content-Type: text/html\n"

<强>更新

我之前使用了已弃用(显然,现在已删除)的call-with-by-reference语法。对我感到羞耻。此外,显然exec()将输出作为基于行的数组返回,因此如果您想将其作为单个字符串,则必须加入它。