Python subprocess.call和参数列表

时间:2017-08-11 04:47:42

标签: php python list subprocess

首先在这里发帖,但在寻找答案时多次来过这里。

我已经完成了我的第一本编码书,并希望为我正在编写的程序添加一些功能。我试图传递一个列表,其中每个数字是一个参数发送到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)

给我一​​个字符串值列表,并在各自的行中输出值。

根据此处的内容修改了我的其他程序并且运行良好。感谢。

0 个答案:

没有答案