使用 Python 拆分 ps 的输出

2024-01-23

在 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 拆分 ps 的输出 的相关文章

随机推荐

  • 动态更新 AutoCompleteTextView 适配器

    我想通过从 RESTful Web 服务获取列表来定期更改 AutoCompleteTextview 给出的建议 但无法使其顺利工作 我设置了一个硬编码的建议列表以确保它有效 ArrayAdapter
  • 如何使用 EmbeddedNavigator 在 DevExpress GridView 中保存行更改

    我正在使用嵌入式导航器的添加 编辑和删除按钮 我已经订阅了gridControl1 EmbeddedNavigator ButtonClick事件 然后我检查单击了哪个按钮 问题是 当我编辑单元格并按保存更改时 EndEdit 我没有看到新
  • 如何在Wordnet中找到“词法文件”?

    如果你看一下并选择 显示选项 显示词汇文件信息 您将看到一个非常有用的单词分类 称为词汇文件 例如 对于 填充 我们有
  • 使用 Office Open XML 重复内容

    我一直在研究 Office Open XML 文档规范的可能性 我对能够将自定义 XML 内容添加到文档并将其绑定到内容控件特别感兴趣 我想知道是否可以有重复的内容控制类型 例如 假设我的 docx 文件中有一些自定义 XML 如下所示
  • 为什么使用 AsQueryable() 而不是 List()?

    我正在使用存储库模式进行数据访问实体框架 http en wikipedia org wiki ADO NET Entity Framework and LINQ http en wikipedia org wiki Language In
  • Z3 Optimize 最大和最小功能背后的理论是什么?

    我写这封信是为了询问 Z3 Optimize 功能背后的理论 算法 特别是它的maximum and minimum功能 这对我来说似乎很神奇 它是某种二分搜索吗 它如何有效地计算出这里的最大 最小值 我试图搜索相关功能的源代码 例如 ex
  • context-param可以在web.xml中引用吗?

    我可以在 DD 本身中引用上下文参数吗 例如
  • ReactiveList 和 WhenAny

    我有许多检查清单ReactiveLists具有ChangeTrackingEnabled true 我只想在每个列表中至少选中一项时启用 OkCommand 此外 我想确保用有效的字节值填充其他各种属性 我尝试执行以下操作 但它不起作用 t
  • 如何修改 Azure Functions 中本机注入的 IConfiguration

    我们需要add本地提供给 Azure Functions 的本机 IConfiguration 的配置提供程序 目前我们完全替换使用以下代码将其与我们的自定义 Iconfiguration 结合使用 public class Startup
  • OWIN app.use vs app.run vs app.map

    它们之间有什么区别app use app run app map in Owin http www asp net aspnet overview owin and katana 什么时候用什么 阅读文档时并不简单 app use将一个中间
  • 具有有限身份验证的附加组件无法打开侧边栏

    我有一个 Google 文档插件 它被编程为在文档打开时立即打开侧边栏 当然 这需要在文档中安装并启用该附加组件 我发现 一周以来 在我们的用例中非常有用的侧边栏自动打开功能不再起作用 在 StackDriver 日志中我看到此报告 onO
  • 在 MKMapView 上使用叠加层进行缩放时出现异常: NSInvalidArgumentException NSSetM removeObject:对象不能为 nil

    我添加了大约1000MKPolygon到一个MKMapView 将叠加层添加到MKMapView效果很好 但是 如果我快速放大和缩小 偶尔放开变焦 这样mapView处理它是新的visibleMapRect 我发现应用程序 有时 崩溃并出现
  • VIM 从 :shell 命令中打开文件

    假设我从 with VI 发出 shell 命令 然后我导航到一个目录并决定需要编辑我在那里看到的 foo txt 文件 有没有办法从 shell 返回 vi 并打开 foo txt 进行编辑 只要满足以下条件 就有办法实现你想要的 Vim
  • 压缩存档错误:无法访问该文件,因为该文件正在被另一个进程使用

    我想压缩一个路径 其中运行一个服务窗口 当服务停止时 它工作正常 当服务运行时 我有例外 该进程无法访问该文件 因为该文件正在被另一个进程使用 过程 但是 当我使用 7 zip 压缩时 没有任何异常 我的命令 Compress Archiv
  • 在两列之间的范围内搜索特定值python dataframe

    我有两个 csv 文件 根据 csv 文件 1 中单元格的值 我应该能够在 csv 文件 2 的列中搜索该值 并从 csv 文件 2 中的其他列获取相应的值 如果这很令人困惑 我很抱歉 通过插图可能会变得清楚 CSV 文件 1 Car Mi
  • 正则表达式仅允许字母和某些字符

    我正在尝试创建一个仅允许大写或小写字母以及空格字符 和 的正则表达式 这是我到目前为止所拥有的 但由于某种原因它仍然让我输入数字 a zA Z 任何帮助都会很棒 谢谢 在角色类别中很特殊 它用于定义一个范围 就像您所做的那样a z 匹配文字
  • 获取对从 AsyncTask 调用 Activity 的引用(不是作为内部类)

    是否有可能从不是调用 Activity 类的内部类的 AsyncTask 中获取对启动 AsyncTask 执行的 Activity 实例的引用 我知道这个线程 https stackoverflow com questions 23792
  • 如何使用模板专门化来查找成员函数参数类型等?

    我确信我以前见过这种描述 但现在我一辈子都找不到它 给定一个具有某种形式的成员函数的类 例如 int Foo Bar char double 如何使用模板和各种专业化来推断组成类型 例如 template
  • HttpContext 为空?

    是否可以这样说 当 Httpcontext 对象为 null 时 iis 就关闭了 我知道当第一个请求iis asp net 时应用程序管理器创建 环境 应用程序域 其中有应用程序运行时 里面有块 如果服务器上有超过 1 个应用程序 每个
  • 使用 Python 拆分 ps 的输出

    在 Linux 上 命令 ps aux 输出进程列表 其中每个统计数据包含多个列 例如 USER PID CPU MEM VSZ RSS TTY STAT START TIME COMMAND postfix 22611 0 0 0 2 5