我做的很简单
import subprocess
with cd("/home/myuserid"):
subprocess.call("ls ")
其中cd取自here而且它不起作用(与任何其他路径相同):
OSError:[Errno 2]没有这样的文件或目录
答案 0 :(得分:2)
ls
之后您有一个额外的空格,这会导致您的问题。删除它,它应该工作正常。
import subprocess
with cd("/home/myuserid"):
subprocess.call("ls")
当您使用subprocess
而没有shell=True
时,它会将您传递的整个字符串解释为要执行的命令。因此,当你提供额外的空间时,它会查找一个字面上称为"ls "
的程序,当然这个空间不存在。
如果你要使用shell=True
,即使有额外的空间它也能正常工作,因为/bin/sh
shell将用于运行命令,shell不会关心额外的空间。一般来说,使用默认值shell=False
更安全,所以我坚持这一点。