控制台o / p数据到日志文件没有格式化(Python脚本)

时间:2014-12-09 17:06:55

标签: python

我有一个python脚本,我用它来命令一个软件(运行模拟),然后在完成后关闭simu软件。模拟s / w有一个控制台窗口,在其上显示一些o / p。

如果我不使用shell手动启动这个simu,那么我也可以在shell中看到这个simu / w控制台窗口的o / p。

我的主要目标是将此控制台窗口o / p写入日志文件。

因此,我做了以下工作,它正在发挥作用。

import commands
logging.basicConfig(...)
.
.
.    
simu_cmd = "my_cmd"
logging.info(commands.getstatusoutput(simu_cmd))
.
.

现在当我在python脚本完成执行后打开我的日志文件时,我看到在日志文件中写出完整的预期o / p。

但是没有数据格式化。它就像一个接一个地打印的大字符串。单词之间有空格,但是“新行”存在问题。我甚至可以在日志文件中看到'\ n'和'\ r'字符。

任何人都可以建议我如何将格式化的输出写入日志文件或改进我编写的代码?

注意 - 可能是我使用旧进程写出日志文件,但我想保持它简单愚蠢。在某些帖子中有些人提到了subprocess()的用法,但对我来说看起来很复杂。我将永远使用Linux m / c。

1 个答案:

答案 0 :(得分:0)

您正在记录commands.getstatusoutput()的结果,它不仅仅是命令的输出,而是元组,包含两个元素 - 状态值和命令输出。如果您记录该元组,您将获得该元组的字符串表示形式,元组中的字符串将使用repr()函数转换为元组中的字符串表示形式。

以下是差异的一个例子:

In [27]: result = (0, 'one\ntwo')

In [28]: print result
(0, 'one\ntwo')

In [29]: print result[1]
one
two