python getoutput() 在子进程中等效
我想在 python 脚本中获取一些 shell 命令的输出,例如 ls 或 df 。我发现 commands.getoutput('ls')
已被弃用,但 subprocess.call('ls')
只能获取返回码。
我希望有一些简单的解决方案。
I want to get the output from some shell commands like ls
or df
in a python script. I see that commands.getoutput('ls')
is deprecated but subprocess.call('ls')
will only get me the return code.
I'll hope there is some simple solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用subprocess.Popen:
请注意,通信会阻塞,直到进程终止。如果您需要在终止之前输出,您可以使用process.stdout.readline()。有关更多信息,请参阅文档< /a>.
Use subprocess.Popen:
Note that communicate blocks until the process terminates. You could use process.stdout.readline() if you need the output before it terminates. For more information see the documentation.
对于 Python >= 2.7,请使用 subprocess.check_output()。
http://docs.python.org/2/library/subprocess.html#subprocess.check_output< /a>
For Python >= 2.7, use
subprocess.check_output()
.http://docs.python.org/2/library/subprocess.html#subprocess.check_output
要使用
subprocess.check_output()
捕获错误,您可以使用CalledProcessError
。如果您想将输出用作字符串,请从字节码中对其进行解码。To catch errors with
subprocess.check_output()
, you can useCalledProcessError
. If you want to use the output as string, decode it from the bytecode.