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

如何用Python提取或修改系统设置?求Mac端替代Windows工具的方案

在Mac上用Python获取系统设置与数据的实现方案

以下是针对你需求的Mac端等效实现,涵盖FileVault状态查询(替代Windows BitLocker)、睡眠/锁定倒计时、杀毒软件检测三个功能:

1. 查询FileVault加密状态(对应Windows的BitLocker)

Mac的磁盘加密功能为FileVault,可通过系统命令fdesetup查询,Python调用示例:

import subprocess

def get_filevault_status():
    try:
        result = subprocess.run(
            ['fdesetup', 'status'],
            capture_output=True,
            text=True,
            check=True
        )
        return result.stdout.strip()
    except subprocess.CalledProcessError as e:
        return f"查询失败: {e.stderr.strip()}"

# 调用示例
print(get_filevault_status())

执行后会返回类似FileVault is On.或FileVault is Off.的状态结果。

2. 获取睡眠/锁定倒计时时长

自动睡眠倒计时

通过pmset命令读取系统电源设置:

import subprocess

def get_sleep_timeout():
    try:
        result = subprocess.run(
            ['pmset', '-g', 'custom'],
            capture_output=True,
            text=True,
            check=True
        )
        for line in result.stdout.split('\n'):
            if 'sleep' in line:
                parts = line.split()
                if len(parts) >= 2:
                    return f"自动睡眠倒计时: {parts[1]} 分钟"
        return "未设置自动睡眠"
    except subprocess.CalledProcessError as e:
        return f"查询失败: {e.stderr.strip()}"

print(get_sleep_timeout())

屏幕自动锁定倒计时

读取系统屏幕保护程序的闲置超时设置:

import subprocess

def get_screen_lock_timeout():
    try:
        result = subprocess.run(
            ['defaults', 'read', 'com.apple.screensaver', 'idleTime'],
            capture_output=True,
            text=True,
            check=True
        )
        idle_seconds = int(result.stdout.strip())
        return f"屏幕自动锁定倒计时: {idle_seconds // 60} 分钟"
    except subprocess.CalledProcessError as e:
        if "does not exist" in e.stderr:
            return "未设置屏幕自动锁定"
        return f"查询失败: {e.stderr.strip()}"

print(get_screen_lock_timeout())

3. 检测已安装的杀毒软件

Mac没有统一的杀毒软件查询接口,可通过检测进程和应用目录识别主流产品:

import subprocess
import os

def get_installed_antivirus():
    detected = []
    # 检查进程关键字
    try:
        proc_output = subprocess.run(
            ['ps', 'aux'],
            capture_output=True,
            text=True,
            check=True
        ).stdout.lower()
        keywords = ['avast', 'malwarebytes', 'norton', 'mcafee', 'kaspersky']
        for keyword in keywords:
            if keyword in proc_output and keyword.capitalize() not in detected:
                detected.append(keyword.capitalize())
    except:
        pass

    # 检查应用目录
    app_paths = [
        '/Applications/Avast.app',
        '/Applications/Malwarebytes.app',
        '/Applications/Norton Security.app',
        '/Applications/McAfee.app'
    ]
    for path in app_paths:
        app_name = os.path.basename(path).replace('.app', '')
        if os.path.exists(path) and app_name not in detected:
            detected.append(app_name)

    if detected:
        return f"已安装的杀毒软件: {', '.join(detected)}"
    else:
        return "未检测到常见杀毒软件"

print(get_installed_antivirus())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:27:28