【问题标题】:subprocess not working with change directory in python子进程不使用python中的更改目录
【发布时间】:2014-09-30 23:47:16
【问题描述】:

我正在做这个简单的事情

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

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

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

【问题讨论】:

标签: python ubuntu subprocess


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多