You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则匹配文件内容遇问题:测试代码无输出求解

问题分析与解决
  • 你的正则表达式逻辑错误:(?m)^\(cpu\)\(.*\) 是用来匹配以(cpu)(任意内容)开头的行,但/proc/cpuinfo的行格式是关键字: 值(比如processor : 0、cpu cores : 4),根本不存在带括号的(cpu)开头的行,所以自然匹配不到任何内容。

修正方案

1. 匹配所有包含cpu的行

如果你的需求是找出所有包含cpu的行,把正则改成如下形式,再用findall提取所有匹配结果:

import re 
import subprocess 

rx = re.compile("(?m)^.*cpu.*$") 
output = subprocess.run(["cat","/proc/cpuinfo"], stdout=subprocess.PIPE) 
lines = output.stdout.decode('utf-8') 
matches = rx.findall(lines)
for match in matches:
    print(match)

2. 匹配特定CPU字段(比如cpu cores)

如果是想提取特定字段的值,比如CPU核心数,可以用更精准的正则:

import re 
import subprocess 

rx = re.compile("(?m)^cpu cores\s*:\s*(.*)$") 
output = subprocess.run(["cat","/proc/cpuinfo"], stdout=subprocess.PIPE) 
lines = output.stdout.decode('utf-8') 
cores = rx.findall(lines)
print(cores)  # 输出所有CPU核心数的列表

3. 更高效的文件读取方式

其实不需要调用cat命令,直接用Python内置的文件读取功能更高效:

import re

rx = re.compile("(?m)^.*cpu.*$")
with open("/proc/cpuinfo", "r") as f:
    lines = f.read()
matches = rx.findall(lines)
for match in matches:
    print(match)

内容的提问来源于stack exchange,提问作者olh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:12:39