Python从元组转换为字符串
我知道对很多人来说这很简单,但对我来说就不那么容易了。我想从命令行输出一些数据,但在把它转换成字符串时遇到了困难。我试过用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 中调用外部命令