Shell命令在shell中工作,但在从Python子进程触发时则不行

时间:2016-07-27 08:49:07

标签: python shell phantomjs

我正在尝试从Python脚本执行shell命令。 我尝试了通常的嫌疑人,subprocess.call,Popen,os.system等。

我试图执行的命令确实相当长(7k个字符),因为其中一个参数是json字符串。从我所读到的长度来看,这不应该是问题。

命令如下所示:

phantomjs /some/path/visualizer_interface.js -path /another/path/chart.svg -type chart_pie -id 0 -language de -data '{...}'

可视化界面是我自己编写的一个脚本,它基本上在Phantom JS上下文中呈现所请求的图表,抓取svg并将其写入指定的路径。当我执行完全相同的命令时,我得到一个完美的图表,但在Python中,子进程永远不会返回,并且我不会得到任何形式的反馈,甚至在子进程stdout上也没有。

with open('/home/max/stdout.txt', 'w') as out:
    res = subprocess.Popen(command, shell=True, stdout=out)
res.wait()

我能够执行其他shell命令,因此它不是Python的基本问题。

非常感谢任何想法。

1 个答案:

答案 0 :(得分:0)

原来我在phantomjs脚本中有一个非常小的错误,根据它的执行位置而有所不同。