【发布时间】:2015-02-12 00:09:24
【问题描述】:
我想知道subprocess.call() 是否已正确终止且调用函数中没有任何错误。例如,在下面的代码中,如果提供的路径不合适,ls 命令会报错:
错误:没有这样的文件或目录。
我希望将相同的输出存储为字符串。
import subprocess
path = raw_input("Enter the path")
subprocess.call(["ls","-l",path])
【问题讨论】:
-
已经提出了类似的问题。 stackoverflow.com/questions/1996518/…
-
@GeorgeSimms:通常输出和退出状态是不同的。在不检索子进程的 stdout/stderr 的情况下知道返回码可能就足够了,以检查子进程是否正确终止,例如,非零退出状态通常表示错误(取决于子进程),而不管 stdout/stderr 值如何。
-
@JFSebastian 作者询问-子进程是否成功(可以从退出代码的虚假性确定)-子进程的输出到stdout/stderr作为字符串(可以是通过在 Popen 的结果上调用
communicate获得)subprocess.call不足,因为无法检索到 stdout/stderr 的输出。否则我们可以做something_went_wrong() if subprocess.call(stuff) else we_are_ok()
标签: python subprocess