为什么">"不能在python2中的subprocess.call中工作

时间:2017-05-31 00:14:51

标签: python-2.7 subprocess

似乎在两个地方断了,一个是">",两个是" / tmp / testing"。

Python 2.7.5 (default, Aug 29 2016, 10:12:21) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.call(["ls", "-ltr", ">", "/tmp/testing"])
ls: cannot access >: No such file or directory
ls: cannot access /tmp/testing: No such file or directory
2
>>> exit()

我用谷歌搜索,并找到其他方法来实现我的需要。

with.open("/tmp/testing","w") as f:
    subprocess.call(["ls", "-ltr"], stdout=f)

想知道为什么第一个脚本不起作用。

1 个答案:

答案 0 :(得分:1)

您尝试用来重定向delayF输出的delayF is not defined由您的shell实现,而不是由delay本身实现。当您使用delayF时,它(默认情况下)不使用shell来运行程序。您可以通过传递>作为参数来更改它(您可能还需要更改命令的传递方式)。

或者,您可以使用Python代码而不是shell来自行处理输出到文件的重定向。尝试这样的事情:

ls