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


Can I send a .xml file from .py script to .php script without using API

我被困在我的项目工作中。

我必须在不使用任何 API 的情况下将.xml文件从我的 python 脚本发送到.php脚本。

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

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

请指导我一些想法。

提前感谢您的任何帮助

是的,你可以:)阅读有关 XML RPC 的信息:

https://en.wikipedia.org/wiki/XML-RPC

https://docs.python.org/2/library/xmlrpclib.html

http://php.net/manual/en/book.xmlrpc.php

如果 Python

和 PHP 装备在同一台服务器上,请考虑一个简单的文件导出/导入,其中 xml 内容被转换为字符串并从 Python 保存为文件,然后读入 PHP:

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>

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

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>