这个问题已经在这里有了答案 :
运行shell命令并捕获输出 (18个答案)
9个月前关闭。
我想stdout
在运行os.system
调用后获取in变量。
让我们以这行为例:
batcmd="dir"
result = os.system(batcmd)
result
将包含错误代码(对于上述示例,stderr
0
在Windows或1
某些Linux下)。
如何stdout
在执行的命令中不使用重定向的情况下获取上述命令的?
如果您只需要stdout
输出,那么看看subprocess.check_output()
:
import subprocess
batcmd="dir"
result = subprocess.check_output(batcmd, shell=True)
因为您正在使用os.system()
,所以您必须进行设置shell=True
才能获得相同的行为。您确实要注意将不可信参数传递给您的Shell的安全问题。
如果还需要捕获stderr
,只需将其添加stderr=subprocess.STDOUT
到呼叫中:
result = subprocess.check_output([batcmd], stderr=subprocess.STDOUT)
将错误输出重定向到默认输出流。
如果您知道输出是文本,则添加text=True
以使用平台默认编码对返回的字节值进行解码;使用encoding="..."
而不是如果该编解码器是不适合你接收到的数据是正确的。
问题内容: 我是shell脚本的新手,并且正在使用Ubuntu-11.10。在使用命令后的终端中,无论我向终端发出什么命令,其输出都不会显示在终端中。我知道STDOUT将被重定向到文件,这些命令的输出将被重定向到文件。 我的问题在这里 使用后,如何摆脱这种情况?即如何停止STDOUT重定向到文件并恢复STDOUT的正常操作(即重定向到终端而不是文件)? 我尝试使用,但由于这关闭了STDOUT文件描
我正在读取一个csv文件。每行有不同的值,但我只对第一个和第二个值感兴趣,它们具有以下格式: 2015-11-02 10:07:33,2015-11-02 10:07:52 我需要获取两者之间经过的时间。我的代码是: 但我得到以下错误: TypeError:不支持的操作数类型-:“str”和“str” 我该怎么办?谢谢。 更新:我的问题解决了。但现在我需要将每次经过的块转换为浮点。非常感谢。
问题内容: 我有一个程序,在运行过程中有时需要调用python才能执行某些任务。我需要一个调用python并 捕获pythons stdout 并将其放入某个文件的函数。这是函数的声明 我的问题是捕获 给定命令 (pythonInput)的 所有python输出 。我没有使用python API的经验,我不知道执行此操作的正确方法是什么。我尝试过的第一件事是使用Py_run_SimpleStrin
问题内容: 我需要运行一个程序并将其输出收集到stdout。这个程序(socat)需要在python脚本期间在后台运行。Socat一旦运行,便处于dameon模式,但首先,它将向我的其余脚本输出一些行到stdout。 命令: 输出: … 我基本上想在程序开始时运行它,并保持运行直到脚本终止,但是我需要将两个/ dev / pts / X名称读入python。 谁能告诉我该怎么做? 我想出了这个挂起
问题内容: 我在我的Jenkinsfile中使用一个块来同时执行一些测试,但是所有输出都变得混乱起来。 作为示例,这是我的Jenkinsfile的摘录: 请注意,正如此处建议的那样,我在每个中都运行了一个新程序,因此它们得到了适当的并行化,并且每个都有自己的工作区。 要让詹金斯向我展示块的单独输出,我该怎么办? 问题答案: 在您的工作的构建页面上,左侧有一个“管道步骤”链接。在树状结构中,您可以找
问题内容: 我们有以下课程 和这个 现在,我需要在运行时知道is是否为 。由于这是jpa自动处理的,因此我无法获取此值。 我们正在调用一个带有as参数的方法,我想避免使用它来检查它是什么类型。如果我可以做些类似的事情会更酷 问题答案: 您可以将鉴别符映射为只读属性: