回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试将python矩阵转换为php(为解决这个问题奋斗了20多个小时)。我真的很感谢你的帮助!在</p>
<p>下面有两种情况:测试和真实。在</p>
<ul>
<li>测试:将php变量传递给python。显式地将值赋给python矩阵。这个矩阵应该调用php。在</li>
<li>REAL:一个php变量被传递给python。除了变量之外,还有一个文件被归档到python。然后,将解析后的值赋给应该调用php的matrix。在</li>
</ul>
<p>它们运行的python输出和php代码完全相同。唯一的区别是,在实际情况下,文件被归档到python脚本中。测试python本身工作正常,真正的python本身工作正常,TEST php python运行正常,但真正的php python运行失败。所以我的猜测是,php不允许python在文件中放入python脚本??我的代码看起来像:</p>
<h2>==========测试用例===========</h2>
<p>====测试.py在</p>
<pre><code>import os, sys, json
g = json.loads( sys.argv[1] )
gene = ['>MhA1_Contig0.frz3.gene1', '>MhA1_Contig0.frz3.gene1', '>MhA1_Contig0.frz3.gene1']
gene.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(g)
seq = ["ATGGAC", "GGCACAGC", "CCACC"]
seq.append('ACTGAAA')
print json.dumps(output)
</code></pre>
<p>====测试.php在</p>
^{pr2}$
<p>====网页上的结果</p>
<pre><code>>MhA1_Contig0.frz3.gene1
ATGGAC
>MhA1_Contig0.frz3.gene1
GGCACAGC
</code></pre>
<h2>==========真实情况===========</h2>
<p>====真.py在</p>
<pre><code>import os, sys, json
inF = file("getSeq_Mh.fasta", "r")
g = json.loads( sys.argv[1] )
inF = file("getSeq_Mh.fasta", "r")
line = inF.readline()
matrix = []
--- (some codes here) ---
inF = file("getSeq_Mh.fasta", "r")
line = inF.readline()
gene = []
--- (some codes here) ---
for i in range(len(index)) :
output[i][0] = ">" + gene[i]
output[i][1]= str(matrix[i])[2:-4]
print json.dumps(output)
# print output
</code></pre>
<p>====真.php在</p>
<pre><code>$output=null;
$g = "0.CUFF.6.1_2";
$data = escapeshellarg(json_encode($g));
exec("python /mysql/getSeq/real.py $data 2>&1 &", $output );
//exec("python /mysql/getSeq/real.py $data 2>&1", $output ); --> no difference in results
//exec("python /mysql/getSeq/real.py $data", $output ); --> no difference in results
$result = json_decode( exec("python /mysql/getSeq/real.py $data 2>&1", $output ) , true);
print_r($output) . "<br>";
//var_dump($output) . "<br>";
//print_r( $result) . "<br>";
//var_dump($result) . "<br>";
//echo $result[0][0] . "<br>";
//echo $result[0][1] . "<br>";
//echo $result[1][0] . "<br>";
//echo $result[1][1] . "<br>";
</code></pre>
<p>====网页上的结果</p>
<p>打印($output);-->;错误</p>
<pre><code>Array ( [0] => Traceback (most recent call last): [1] => File "/mysql/getSeq/getOne.py", line 3, in [2] => inF = file("getSeq_Mh.fasta", "r") [3] => IOError: [Errno 2] No such file or directory: 'getSeq_Mh.fasta' [4] => Traceback (most recent call last): [5] => File "/mysql/getSeq/real.py.py", line 3, in [6] => inF = file("getSeq_Mh.fasta", "r") [7] => IOError: [Errno 2] No such file or directory: 'getSeq_Mh.fasta' )
</code></pre>
<p>var_dump($output);-->;错误</p>
<pre><code>array(8) { [0]=> string(34) "Traceback (most recent call last):" [1]=> string(95) " File "/mysql/getSeq/getOne.py", line 3, in " [2]=> string(38) " inF = file("getSeq_Mh.fasta", "r")" [3]=> string(63) "IOError: [Errno 2] No such file or directory: 'getSeq_Mh.fasta'" [4]=> string(34) "Traceback (most recent call last):" [5]=> string(95) " File "/mysql/getSeq/real.py.py", line 3, in " [6]=> string(38) " inF = file("getSeq_Mh.fasta", "r")" [7]=> string(63) "IOError: [Errno 2] No such file or directory: 'getSeq_Mh.fasta'" }
</code></pre>
<p>打印($result);-->;错误</p>
<pre><code>(nothing)
</code></pre>
<p>var_dump($result);-->;错误</p>
<pre><code>NULL
</code></pre>
<h2>========PYTHON本身===========</h2>
<pre><code>[['>MhA1_Contig0.frz3.gene1', 'ATGGACT'], ['>MhA1_Contig0.frz3.gene1', 'GGCACAGC'], ['>MhA1_Contig0.frz3.gene1', 'CCACC']]
</code></pre>