当前位置: 首页 > 面试题库 >

使用Python分割ps的输出

祁嘉言
2023-03-14
问题内容

在Linux上,命令ps aux输出每个统计信息具有多个列的进程列表。例如

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
...
postfix  22611  0.0  0.2  54136  2544 ?        S    15:26   0:00 pickup -l -t fifo -u
apache   22920  0.0  1.5 198340 16588 ?        S    09:58   0:05 /usr/sbin/httpd

我希望能够使用Python进行阅读,然后将每一行然后每一列分开,以便可以将它们用作值。

在大多数情况下,这不是问题:

ps = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE).communicate()[0]
processes = ps.split('\n')

我现在可以遍历流程以获取每一行并将其按空格分开,例如

sep = re.compile('[\s]+')
for row in processes:
    print sep.split(row)

但是,问题在于命令的最后一列有时在其中有空格。在上面的示例中,可以在命令中看到

pickup -l -t fifo -u

将被拆分为

['postfix', '22611', '0.0', '0.2', '54136', '2544', '?', 'S', '15:26', '0:00', 'pickup', '-l', '-t', 'fifo', '-u']

但我真的希望它是:

['postfix', '22611', '0.0', '0.2', '54136', '2544', '?', 'S', '15:26', '0:00', 'pickup -l -t fifo -u']

所以我的问题是,我该如何拆分列,但是当涉及到命令列时,将整个字符串保留为一个列表元素,而不是按空格拆分?


问题答案:

使用第二个参数split指定将字符串拆分为的最大字段数。我想您可以通过计算第一行中的字段数(即列标题)来找到数字。

ps = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE).communicate()[0]
processes = ps.split('\n')
# this specifies the number of splits, so the splitted lines
# will have (nfields+1) elements
nfields = len(processes[0].split()) - 1
for row in processes[1:]:
    print row.split(None, nfields)


 类似资料:
  • 我是新使用python阅读文本文件。我需要读一个文件,每行有4个我需要的数据,这是我的文本文件 我的问题是,如果我使用,它只用每行创建一个向量,但是我只需要一个向量用于第一列,一个用于第二列,一个用于第三列,还有一个用于第四列...有谁能帮帮我吗?

  • 问题内容: 我有一个字符串如下: 我想提取数字:872226816,因此在这种情况下,我假设在第二个逗号开始读取数据之后,随后的逗号结束数据读取。 输出示例: 问题答案: 用于String.split()的 Javadoc

  • 问题内容: 如何在定界符哪里分割此字符串 获得?的输出 问题答案: 你可以使用以下功能:

  • 本文向大家介绍如何使用python进行pdf文件分割,包括了如何使用python进行pdf文件分割的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了如何使用python进行pdf文件分割,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 使用方法 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 我有一个连接到我的应用程序的JSON feed。其中一项是经纬度,以逗号分隔。例如:“ 32.0235,1.345”。 我正在尝试通过逗号将其拆分为两个单独的值。 有什么建议吗?谢谢!! 问题答案:

  • 问题内容: 我在网上找到了一些答案,但是我没有使用正则表达式的经验,我相信这里是需要的。 我有一个字符串,需要用分隔 或也就是说,它必须是分号或逗号后跟一个空格。没有尾随空格的单个逗号应保持不变 示例字符串: 应该拆分为包含以下内容的列表: 问题答案: 幸运的是,Python内置了:) 更新: 在你的评论之后: