Python -如何找到计算机的UUID并设置为变量

g6baxovj  于 2023-03-20  发布在  Python
关注(0)|答案(5)|浏览(142)

我一直在互联网上到处寻找一种方法,找到一种方法来获取计算机的UUID,并将其设置为Python中的变量。
我尝试过的一些方法并不奏效。
创意:

import os
x = os.system("wmic diskdrive get serialnumber")
print(x)

但是,这不起作用,并且只返回0。
我想知道他们是否是一种方法,我可以找到一个唯一的硬盘ID或任何其他类型的标识符在python。

kwvwclae

kwvwclae1#

system函数返回已执行命令的退出代码,而不是它的标准输出。
根据Python官方文档:
在Unix上,返回值是以wait()指定格式编码的进程退出状态。
在Windows上,返回值是运行命令后由系统 shell 程序返回的值。
要获得所需的输出,推荐的方法是使用subprocess模块中定义的一些函数,您的场景非常简单,因此subprocess.check_output非常适合。
您只需要将您发布的代码替换为以下代码:

import subprocess
x = subprocess.check_output('wmic csproduct get UUID')
print(x)
ecfdbz9o

ecfdbz9o2#

如果目标是获得硬盘的序列号,那么可以这样做:
在Linux中(将/dev/sda替换为要获取其信息的块磁盘标识符):

>>> import os
>>> os.popen("hdparm -I /dev/sda | grep 'Serial Number'").read().split()[-1]

在Windows中:

>>> import os
>>> os.popen("wmic diskdrive get serialnumber").read().split()[-1]
mdfafbf1

mdfafbf13#

对于Windows,我确实使用了这个,它工作得很完美:

import subprocess

UUID = str(subprocess.check_output('wmic csproduct get UUID'),'utf-8').split('\n')[1].strip()

print(UUID)
3bygqnnd

3bygqnnd4#

对于窗口:

import wmi
import os

def get_serial_number_of_system_physical_disk():
    c = wmi.WMI()
    logical_disk = c.Win32_LogicalDisk(Caption=os.getenv("SystemDrive"))[0]
    partition = logical_disk.associators()[1]
    physical_disc = partition.associators()[0]
    return physical_disc.SerialNumber
fnatzsnv

fnatzsnv5#

对于Linux,请尝试以下操作:

def get_uuid():
    dmidecode = subprocess.Popen(['dmidecode'],
                                      stdout=subprocess.PIPE,
                                      bufsize=1,
                                      universal_newlines=True
                                      )

    while True:
        line = dmidecode.stdout.readline()
        if "UUID:" in str(line):
            uuid = str(line).split("UUID:", 1)[1].split()[0]
            return uuid
        if not line:
            break

my_uuid = get_uuid()
    print("My ID:", my_uuid)

相关问题