如何在python中执行阻塞系统调用(并将其结果作为字符串)

如何在python中执行阻塞系统调用(并将其结果作为字符串),python,Python,如何在python中进行阻塞操作系统调用 例如,获取linux“date”命令的输出 并将其字符串输出结果放入字符串变量中 亲爱的斯塔克 关于“操作系统调用”还有什么不清楚的地方 “封锁”有什么不清楚的地方 我怀疑“关闭”的人甚至没有读过这个问题 是否有解封问题的程序 您可以拨打: import os os.system('date') 您可以这样做: import subprocess proc = subprocess.Popen(['date'],

如何在python中进行阻塞操作系统调用

例如,获取linux“date”命令的输出

并将其字符串输出结果放入字符串变量中


亲爱的斯塔克

关于“操作系统调用”还有什么不清楚的地方

“封锁”有什么不清楚的地方

我怀疑“关闭”的人甚至没有读过这个问题

是否有解封问题的程序

您可以拨打:

import os

os.system('date')

您可以这样做:

import subprocess
proc = subprocess.Popen(['date'],
                        stdout=subprocess.PIPE,
                        stderr=subprocess.PIPE)
stdout, stderr = proc.communicate()
Popen的第一个参数是要执行的命令行参数列表。后面的管道参数指示python捕获命令的输出
communicate()
等待命令完成并以字符串形式返回进程的stdout和stderr。执行后,
stdout
变量将包含来自子流程的文本。请注意,此模式有一些警告(特别是对于大量输出)。您可以在此处了解更多信息:


要获取命令的输出,请使用
检查输出
,与
Popen
相比,它的优点是,如果命令失败,会引发异常:

from subprocess import check_output
output = check_output(["date"])

(我想你说的不是真的。)

这个问题有什么不清楚的?请删除否决票。@magic sudo我自己也是一个否决票纳粹分子,但不是fun@SHernandez“你得到我的一票!这是一个好问题。python的第三个结果是如何运行外部命令并等待返回这很好,但忽略了“字符串结果”部分。结果是整数。这是一种简单而古老的方法。如果我想要一个真正的系统调用,我会说我妈妈很有趣,check_输出看起来像一个方便的包装,不是吗?是的,请参阅模块。不过很方便;)这是一个非常好的答案,但F.X.的方法更方便,而且处理错误和异常也很好。可能不得不接受his@SHernandez--的确如此,但并非所有版本的python都可以使用它。我使用的代码通常需要最小的公分母。因此,我通常在需要的地方使用不太方便的方法和错误捕获。最好的解决方案取决于您的用例。应该注意,最后一行中的stdout和stderr是bytestring,末尾有一个换行符。但函数调用的同名参数是操作系统管道对象,只是为了防止混淆