Python从元组转换为字符串

0 投票
4 回答
561 浏览
提问于 2025-04-17 13:50

我知道对很多人来说这很简单,但对我来说就不那么容易了。我想从命令行输出一些数据,但在把它转换成字符串时遇到了困难。我试过用for循环,但没成功。简单来说,我想要的是:每当命令行中出现新的一行,就输出一行。我举个例子,比如free -m这个命令。它的输出是:

  total       used       free     shared    buffers     cached
  Mem:           144        512        111          0          0        121
  -/+ buffers/cache:         23        232
  Swap:            0          0          0

到目前为止,我写的代码是:

import commands
foo...
sout = commands.getstatusoutput(inp)
    return ' '.join(str(line) for line in sout)
foo...

但是输出的结果只有一行(就是第一行的总数、已用、空闲、共享等信息)

我希望每一行都能单独输出,就像命令行中的输出那样。如果我不使用.join,输出的结果就像是:

(0, '             total       used       free     shared    buffers     cached\nMem:           512        144        368          0          0        121\n-/+ buffers/cache:         21        234\nSwap:            0          0          0')

而且因为我想把它变成一个字符串,我甚至试过用'\n'.join,但结果只输出了0(真是搞不懂)。有没有什么好主意?

4 个回答

0

整个字符串都在这个元组里,包括换行符什么的,所以我想你只需要做以下操作:

print sout[1]

假设 sout 就是你在问题中提到的那个元组:

(0, '             total       used       free     shared    buffers     cached\nMem:           512        144        368          0          0        121\n-/+ buffers/cache:         21        234\nSwap:            0          0          0')
0

只需要检查一下有没有换行符,然后在你的输出中插入一个换行符。其实你是把输入当作一个整体来处理的。希望这能帮到你。

1

你也可以使用 os.popen,这样会方便很多。

print os.popen('free -m').read()

你可能想看看这个讨论,里面有关于如何在 Python 中运行 shell 命令的各种选择,能让你对这些选项有个全面的了解。这里是链接:在 Python 中调用外部命令

撰写回答