Проверьте, работает ли он на ноутбуке или настольном компьютере, введите тип Python - PullRequest
0 голосов
/ 09 июля 2020

Я хочу создать сценарий python, который проверяет форм-фактор компьютера пользователя (ноутбук или настольный компьютер), а затем я смогу использовать такие условия:

chassis_type = some_module.get_chassis_type()
if chassis_type == 'laptop':
    print("You are out of luck, because you are using laptop.")
if chassis_type == 'desktop':
    print("You are good to go, because you are using desktop.")

Я не хочу чтобы проверить, присутствует ли батарея, но я хочу использовать более общий c способ. Есть ли способ добиться этого, используя python?

1 Ответ

0 голосов
/ 09 июля 2020

Есть несколько способов сделать это.

Вы можете прочитать эту информацию из прошивки с помощью модуля dmidecode, но для этого требуются разрешения. Кроме того, вы можете напрямую читать /sys/class/dmi/id/chassis_type файл и преобразовывать число в указанную строку шасси.

Но в настоящее время я использую следующий способ:

import re
import subprocess

machine_info = subprocess.check_output(["hostnamectl", "status"], universal_newlines=True)
m = re.search('Chassis: (.+?)\n', machine_info)
chassis_type = m.group(1)
print("Your chassis type is", chassis_type)

Этот метод основан на стандартном systemd спецификация, которая проверяет прошивку, а также /etc/machine-id.

...