php 传递路径中有汉字,从PHP向Python传递有效路径

我有一个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服务器和解析器托管在我的本地计算机上。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值