我有一个Python程序,它解析文件,将路径作为and参数,并使用os.walk(path)解析给定路径和所有子目录中的所有文件。我想从我的phpweb应用程序调用它,这样用户就可以指定一个路径,然后将其作为参数传递给解析器。(传递路径是可以的,因为这一切都在内部网络上)。在
我可以调用解析器并使用popen()传递参数ok,但是Python程序接收到的路径总是无效的。我已经让php脚本输出了它发送到浏览器的命令。如果我将该命令复制并粘贴到命令窗口中,解析器工作正常。在
根据Python脚本中os.path.exists(path)的结果,我知道php脚本传递的路径是无效的
以下是调用Python程序的代码:$path = $_REQUEST['location'];
echo "Path given is: ".$path;
$command = 'python C:\Workspaces\parsers\src\main\main.py '. intval($mode).' "'.$path.'"';
echo "
".$command."
";$parser = popen($command, 'r');
if ($parser){
echo "
Ran the program
";while (!feof($parser)){
$read = fgets($parser);
if (!$read)
echo "
Reached end of file
";else
echo "
".$read."
";}
}
在浏览器中回响的命令如下所示:
python C:\Workspaces\parsers\src\main\main.py 2 "I:\Dir1\Dir2\Dir3"
其中2只是脚本的另一个参数,$_REQUEST['location']是从调用页上表单中的输入文本框定义的。在
这是在Windows系统上,所以我假设这和路径中的反斜杠有关。在
基本上,我不确定如何处理所有的反斜杠。我想了解如何将包含反斜杠的字符串发送到php页面,以及如何使用popen()再次发送它们。我认为打印到浏览器的结果不是原始命令字符串,而且我不能确定popen()发出的命令中到底有多少个反斜杠。在
如果有人有什么想法,我会非常感激的。在
编辑:
因此在Python程序中,路径的使用如下:
^{pr2}$
这将从$read变量返回到浏览器。在
其输出是:Parsing all files in directory tree I:\Dir1\Dir2\Dir3
Path is NOT REAL!!!
0 Files parsed
这与从命令行运行命令时的输出相同(命令从浏览器复制并粘贴到cmd窗口)。但是,当以这种方式运行时,路径是真实的,并且所有文件都被解析。(在命令窗口中也会显示html标记)
web服务器和解析器托管在我的本地计算机上。在