子进程无法使用python中的更改目录

时间:2014-08-07 16:22:50

标签: python ubuntu subprocess

我做的很简单

import subprocess
with cd("/home/myuserid"):
  subprocess.call("ls ")

其中cd取自here而且它不起作用(与任何其他路径相同):

  

OSError:[Errno 2]没有这样的文件或目录

1 个答案:

答案 0 :(得分:2)

ls之后您有一个额外的空格,这会导致您的问题。删除它,它应该工作正常。

import subprocess
with cd("/home/myuserid"):
    subprocess.call("ls")

当您使用subprocess而没有shell=True时,它会将您传递的整个字符串解释为要执行的命令。因此,当你提供额外的空间时,它会查找一个字面上称为"ls "的程序,当然这个空间不存在。

如果你要使用shell=True,即使有额外的空间它也能正常工作,因为/bin/sh shell将用于运行命令,shell不会关心额外的空间。一般来说,使用默认值shell=False更安全,所以我坚持这一点。