我一直在互联网上寻找一种方法来获取计算机的 UUID 并将其设置为 python 中的变量。
我尝试做的一些方法没有奏效。
创见:
import os
x = os.system("wmic diskdrive get serialnumber")
print(x)
但是这不起作用,并且只返回 0。
我想知道他们是否是我可以在 python 中找到唯一硬盘 ID 或任何其他类型标识符的一种方式。
我一直在互联网上寻找一种方法来获取计算机的 UUID 并将其设置为 python 中的变量。
我尝试做的一些方法没有奏效。
创见:
import os
x = os.system("wmic diskdrive get serialnumber")
print(x)
但是这不起作用,并且只返回 0。
我想知道他们是否是我可以在 python 中找到唯一硬盘 ID 或任何其他类型标识符的一种方式。
os.system 函数返回执行命令的退出代码,而不是它的标准输出。
根据Python 官方文档:
在 Unix 上,返回值是以 wait() 指定的格式编码的进程的退出状态。
在 Windows 上,返回值是系统 shell 运行命令后返回的值。
要获得所需的输出,推荐的方法是使用 subprocess 模块中定义的一些函数。您的场景非常简单,因此 subprocess.check_output 可以正常工作。
你只需要用这个替换你发布的代码:
import subprocess
x = subprocess.check_output('wmic csproduct get UUID')
print(x)
如果目的是获取硬盘的序列号,那么可以这样做:
在 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]
对于窗户:
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
对于 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)