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

Python调用powercfg提取电源计划名称及匹配判断失败求助

问题解决:Powercfg输出匹配失败与内容提取

一、字符串匹配失败的原因及修正

失败原因

  1. 类型不匹配:subprocess.check_output()返回的是字节串(bytes类型),直接和字符串比较必然不相等。
  2. 隐藏空白字符:输出末尾通常带有换行符(\n),肉眼不可见但会导致字符串匹配失败。

修正后的匹配代码

import subprocess

activescheme = subprocess.check_output('powercfg -getactivescheme')
# 解码为字符串并去除首尾空白(含换行符)
scheme_str = str(activescheme, encoding='cp866').strip()
print(scheme_str)

target_str = "GUID схемы питания: 22222222-2222-2222-2222-222222222222  (Высокая производительность)"
if scheme_str == target_str:
    print("Yes")
else:
    print("No")

二、提取括号内内容并在Tkinter中显示

使用正则表达式精准提取括号内的内容,再通过Tkinter窗口展示结果:

完整代码

import subprocess
import re
import tkinter as tk

# 获取电源方案输出并处理
activescheme = subprocess.check_output('powercfg -getactivescheme')
scheme_str = str(activescheme, encoding='cp866').strip()

# 提取括号内的电源方案名称
match_result = re.search(r'\((.*?)\)', scheme_str)
scheme_name = match_result.group(1) if match_result else "无法获取电源方案名称"

# 创建Tkinter窗口显示结果
window = tk.Tk()
window.title("当前电源方案")
display_label = tk.Label(window, text=f"当前电源方案:{scheme_name}", font=("Arial", 12))
display_label.pack(padx=30, pady=20)
window.mainloop()

代码说明

  • re.search(r'\((.*?)\)', scheme_str):通过正则表达式匹配括号内的内容,.*?采用非贪婪模式,确保只捕获一对括号内的文本。
  • strip():去除字符串首尾的空格、换行符等空白字符,避免干扰正则匹配。
  • Tkinter部分:创建基础窗口,用Label组件展示提取到的电源方案名称,简洁直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 02:33:28