2024-09-30 01:31:44 发布
网友
我知道有像我这样的问题已经问过了,但即使有这些问题的答案,我也搞不懂。在
菲律宾比索:
<?php $var1 = "hi"; $result = shell_exec('TestingStuff.py'.$var1); ?>
Python:
在Python中运行时收到错误:
IndexError: list index out of range
两个脚本都在同一个文件夹中。在
有人能提供一个关于代码更改的答案吗?在
错误
如果Python脚本完全没有参数运行,那么sys.argv[1]索引超出范围。在
sys.argv[1]
脚本
ExecPython.php
<?php $var1 = "hi"; $result = shell_exec('TestingStuff.py ' . $var1); echo "<pre>$result</pre>";
TestingStuff.py
演示
说明
我们将从Python脚本开始。目标是,脚本打印传递给它的第一个参数,而不会遇到“IndexError:list index out range”错误。在
python TestingStuff.py 123
123
在Python中,传递给脚本的参数位于sys.argv。这是一张单子。sys.argv[0]始终是脚本名称本身(这里是TestingStuff.py)。使用上面的例子,sys.argv[1]现在是123。
sys.argv
sys.argv[0]
处理边缘情况:“没有参数”。在
python TestingStuff.py
这将导致“索引器错误:列表索引超出范围”错误,因为您正在尝试访问列表元素,而该元素不在那里。sys.argv[0]是脚本名称,而sys.argv[1]未设置,但您正在尝试打印它,BAM出现错误。为了避免错误并只打印第一个参数,我们需要确保列表sys.argv包含多个元素(多于脚本名称)。这就是为什么我添加了if len(sys.argv) > 1:。在
if len(sys.argv) > 1:
这意味着:如果列表有多个参数,则只打印第一个参数。
现在我们可以独立地测试Python脚本-有参数也可以不带参数。 然后切换到PHP脚本。
目标是从PHP执行Python脚本。在
PHP提供了几种执行脚本的方法,例如exec()、passthru()、shell_exec()、system()。这里我们使用的是shell_exec()。shell_exec()返回与之一起运行的脚本或命令的输出。在
换句话说:如果您运行$result = shell_exec('php -v');,您将得到$result中的PHP版本行。在
$result = shell_exec('php -v');
这里我们执行Python脚本TestingStuff.py,并添加一个参数,即$var1。它是一个字符串,通过连接添加到shell_exec()的字符串中。对$result进行回显。我将pre标记包装在它周围,因为我认为这是在web/browser上下文中执行的。如果只在CLI上使用脚本,则可能会删除pre标记。
$var1
$result
执行流程
错误
如果Python脚本完全没有参数运行,那么
sys.argv[1]
索引超出范围。在脚本
ExecPython.php
^{pr2}$TestingStuff.py
演示
说明
我们将从Python脚本开始。目标是,脚本打印传递给它的第一个参数,而不会遇到“IndexError:list index out range”错误。在
python TestingStuff.py 123
我们想要输出123
。在在Python中,传递给脚本的参数位于
sys.argv
。这是一张单子。sys.argv[0]
始终是脚本名称本身(这里是TestingStuff.py
)。使用上面的例子,sys.argv[1]
现在是123。处理边缘情况:“没有参数”。在
python TestingStuff.py
这将导致“索引器错误:列表索引超出范围”错误,因为您正在尝试访问列表元素,而该元素不在那里。
sys.argv[0]
是脚本名称,而sys.argv[1]
未设置,但您正在尝试打印它,BAM出现错误。为了避免错误并只打印第一个参数,我们需要确保列表sys.argv
包含多个元素(多于脚本名称)。这就是为什么我添加了if len(sys.argv) > 1:
。在这意味着:如果列表有多个参数,则只打印第一个参数。
现在我们可以独立地测试Python脚本-有参数也可以不带参数。 然后切换到PHP脚本。
目标是从PHP执行Python脚本。在
PHP提供了几种执行脚本的方法,例如exec()、passthru()、shell_exec()、system()。这里我们使用的是shell_exec()。shell_exec()返回与之一起运行的脚本或命令的输出。在
换句话说:如果您运行
$result = shell_exec('php -v');
,您将得到$result中的PHP版本行。在这里我们执行Python脚本
TestingStuff.py
,并添加一个参数,即$var1
。它是一个字符串,通过连接添加到shell_exec()的字符串中。对$result
进行回显。我将pre标记包装在它周围,因为我认为这是在web/browser上下文中执行的。如果只在CLI上使用脚本,则可能会删除pre标记。执行流程
$result
相关问题 更多 >
编程相关推荐