Python 2.7 为什么&燃气轮机&引用;不';t在python2中的subprocess.call中工作

Python 2.7 为什么&燃气轮机&引用;不';t在python2中的subprocess.call中工作,python-2.7,subprocess,Python 2.7,Subprocess,似乎它在两个地方中断,一个是“>”,两个是“/tmp/测试” 我已经在谷歌上搜索过了,并且找到了其他方法来实现我所需要的 with.open("/tmp/testing","w") as f: subprocess.call(["ls", "-ltr"], stdout=f) 想知道为什么第一个脚本不起作用 您试图用来重定向ls输出的是由shell实现的,而不是由ls本身实现的。当您使用subprocess.call时,它(默认情况下)不使用shell来运行程序。您可以通过将shell

似乎它在两个地方中断,一个是“>”,两个是“/tmp/测试”

我已经在谷歌上搜索过了,并且找到了其他方法来实现我所需要的

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

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

您试图用来重定向
ls
输出的
是由shell实现的,而不是由
ls
本身实现的。当您使用
subprocess.call
时,它(默认情况下)不使用shell来运行程序。您可以通过将
shell=True
作为参数传递来更改该值(您可能还需要更改命令的传递方式)

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

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

试图用于重定向
ls
输出的
由shell实现,而不是由
ls
本身实现。当您使用
subprocess.call
时,它(默认情况下)不使用shell来运行程序。您可以通过将
shell=True
作为参数传递来更改该值(您可能还需要更改命令的传递方式)

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

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

因为“>”是shell命令(bash、sh或其他命令)/bin/ls本身对“>”或“|”一无所知,etcThanks@Eugene这是有道理的!因为“>”是shell命令(bash、sh或其他命令)/bin/ls本身对“>”或“|”一无所知,etcThanks@Eugene这是有道理的!