我正在尝试在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) ""
答案 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()
将输出作为基于行的数组返回,因此如果您想将其作为单个字符串,则必须加入它。