首先在这里发帖,但在寻找答案时多次来过这里。
我已经完成了我的第一本编码书,并希望为我正在编写的程序添加一些功能。我试图传递一个列表,其中每个数字是一个参数发送到PHP文件。
这是我一直在看的测试代码。
import subprocess
list1 = [1, 2, 3, 4] #Eventual variable length list of arguments
args = ','.join(str(e) for e in list1) #Convert list to string
print(str1) #Print to screen
subprocess.call(["php","-f","/var/www/html/test.php", args]) #Send
这会将数据发送到看起来像这样的PHP文件。
#!/usr/bin/php
<?php
// Loop through each element in the $argv array
foreach($argv as $value)
{
echo "$value\n"; // Print each argument to terminal
}
?>
当它运行时,我得到了这个结果。 1,2,3,4-
如果我使用看起来像这样的流程调用来运行它,
subprocess.call(["php","-f","/var/www/html/test.php", str(1),str(2),str(3),str(4)])
我将每个数字放在一个单独的行上(我认为每个数字都是一个新的参数。)
如何使subproc.call接受一个参数列表,并且实际上每个逗号分隔的值都是它自己的参数?
EDIT 最后,我将使用它将传感器值的变量列表提交给服务器。
编辑#2
该死的。我没有意识到,直到帖子被标记为重复,subprocess.call正在使用列表。现在让人更有意义。问题是subprocess.call正在寻找一个字符串列表,其中我有一个字符串列表和一个整数列表。
编辑#3 如果有人关心,最终的正确解决方案。
import subprocess
list1 = [1.45736478, 2.234544, 3.87655, 4.99967]
args = [str(x) for x in list1]
print(args)
subprocess.call(["php","-f","/var/www/html/test.php"] + args)
给我一个字符串值列表,并在各自的行中输出值。
根据此处的内容修改了我的其他程序并且运行良好。感谢。