Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP变量传递给Python脚本_Php_Python - Fatal编程技术网

将PHP变量传递给Python脚本

将PHP变量传递给Python脚本,php,python,Php,Python,我正在尝试将一个var从php传递到我的python脚本,但是它似乎不起作用,我查看了不同的论坛帖子,似乎无法使它起作用,我哪里出了问题? python脚本中的var用于第一次睡眠 以下是我的php脚本: $var1 = $_GET['speed']; $command = escapeshellcmd('python /var/www/html/blink.py $var1'); $output = shell_exec($command); echo $output; 以下是我的pytho

我正在尝试将一个var从php传递到我的python脚本,但是它似乎不起作用,我查看了不同的论坛帖子,似乎无法使它起作用,我哪里出了问题? python脚本中的var用于第一次睡眠

以下是我的php脚本:

$var1 = $_GET['speed'];
$command = escapeshellcmd('python /var/www/html/blink.py $var1');
$output = shell_exec($command);
echo $output;
以下是我的python脚本:

import RPi.GPIO as GPIO
from time import sleep
import shlex
from subprocess import call
import sys

while (True):

    # Turn all relays ON
    call(shlex.split('gpio mode 1 out'))
    call(shlex.split('gpio write 1 0'))

    # Sleep for 5 seconds
    sleep(sys.argv[1]) 
    # Turn all relays OFF
    call(shlex.split('gpio write 1 1'))

    # Sleep for 5 seconds
    sleep(2)

上次我检查时,单引号不展开变量。除非试图将文本字符串
$var1
发送到python脚本,否则需要更改
$command=escapeshellcmd('python/var/www/html/blink.py$var1')
展开变量


一种方法是
$command=escapeshellcmd('python/var/www/html/blink.py'.$var1)

上次我检查时,单引号不展开变量。除非试图将文本字符串
$var1
发送到python脚本,否则需要更改
$command=escapeshellcmd('python/var/www/html/blink.py$var1')
展开变量


一种方法是
$command=escapeshellcmd('python/var/www/html/blink.py'.$var1)

您只需使用一个中间变量来连接命令行和参数:

$var1 = $_GET['speed'];
$tmp = 'python /var/www/html/blink.py ' . $var1;
$command = escapeshellcmd($tmp);
$output = shell_exec($command);
echo $output;

我试过了,效果很好。

您可以简单地使用一个中间变量来连接命令行和参数:

$var1 = $_GET['speed'];
$tmp = 'python /var/www/html/blink.py ' . $var1;
$command = escapeshellcmd($tmp);
$output = shell_exec($command);
echo $output;

我试过了,效果很好。

sys.argv[1]
是一个字符串,您需要将其转换为一个数字。调用:
sleep(int(sys.argv[1]))
,并进行错误检查。能否向python脚本添加一个简单的
print(sys.argv)
,并显示它的输出内容?
sys.argv[1]
是一个字符串,需要将其转换为一个数字。调用:
sleep(int(sys.argv[1]))
,并进行错误检查。您能否向python脚本添加一个简单的
print(sys.argv)
,并向我们展示它的输出?请编辑您的答案以显式显示修复程序。遗憾的是,这不起作用,它仍然会发布到python脚本中,但是不要通过你的答案来显式地显示修复程序是什么。遗憾的是,恐怕这不起作用,它仍然会发布到python脚本中,但是没有通过