我可以在不使用API​​的情况下将.xml文件从.py脚本发送到.php脚本

时间:2016-04-24 07:51:41

标签: php python xml

我被困在项目工作中。

我必须将python脚本中的.xml文件发送到.php脚本,而不使用任何API。

我可以使用哪些方法/模块来实现此目的?

接收文件后的PHP脚本应该要求用户下载并从浏览器下载。

请指导我一些想法。

感谢您提前提供任何帮助

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

如果Python和PHP配备在同一台服务器上,请考虑直接文件导出/导入,其中xml内容转换为字符串并从Python保存为文件,然后读入PHP:

Python

import xml.etree.ElementTree as ET

xmlstr = '''\
    <data>      
        <example>88</example>        
    </data>'''    
dom = ET.fromstring(xmlstr)

tree_out = ET.tostring(dom, encoding='UTF-8', method='xml')
xmlfile = open('/path/to/Output.xml', 'wb')
xmlfile.write(tree_out)
xmlfile.close()

<强> PHP

// LOAD XML SOURCE
$doc = new DOMDocument();
$doc->load('/path/to/Output.xml');

// ECHO CONTENT
echo $doc->saveXML();

命令行

您甚至可以使用exec()通过PHP命令行调用Python脚本:

exec('python /path/to/Python/Script.py');

// LOAD XML SOURCE
$doc = new DOMDocument();
$doc->load('/path/to/Output.xml');    

// ECHO CONTENT
echo $doc->saveXML();

//<?xml version="1.0"?>
//<data>      
//        <example>88</example>        
//    </data>

反之亦然,使用子进程的callPopen

从Python开始
import subprocess

#... same as above ...

# RUN CHILD PROCESS W/O OUTPUT
subprocess.call(['php', '/path/to/PHP/Script.php'])

# RUN CHILD PROCESS W/ OUTPUT
proc = subprocess.Popen(['php','/path/to/PHP/Script.php'],
                        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = proc.communicate()

print(stdout.decode("utf-8"))

#<?xml version="1.0"?>
#<data>      
#        <example>88</example>        
#    </data>