我一直在寻找一种方法来找到一种方法来获取计算机的UUID并将其设置为python中的变量。
我尝试过的一些方法并没有奏效。
最初的想法:
import os
x = os.system("wmic diskdrive get serialnumber")
print(x)
但是这不起作用,只返回0.
我想知道他们是否可以在python中找到唯一的Harddrive ID或任何其他类型的标识符。
答案 0 :(得分:3)
os.system函数返回已执行命令的退出代码,而不是它的标准输出。
根据Python official documentation:
在Unix上,返回值是以wait()指定的格式编码的进程的退出状态。
在Windows上,返回值是系统shell返回的值 在运行命令之后。
要获得所需的输出,建议的方法是使用子进程模块中定义的一些函数。您的场景非常简单,因此subprocess.check_output可以正常使用它。
您只需要用此替换您发布代码的代码:
import subprocess
x = subprocess.check_output('wmic csproduct get UUID')
print(x)
答案 1 :(得分:3)
如果目的是获取硬盘的序列号,那么可以这样做:
在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]
答案 2 :(得分:1)
对于Windows:
def get_serial_number_of_system_physical_disk():
import wmi
import os
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
答案 3 :(得分:0)
您可以使用标准库uuid
模块中的uuid1
:
import uuid
myuuid = uuid.uuid1()
这可用于:
从主机ID,序列号和当前时间生成UUID。
但请注意,在使用此uuid时应小心,因为它
可能会破坏隐私,因为它会创建一个包含该隐私的UUID 计算机的网络地址。
如果这不是你想要的,the uuid
modul e有许多其他好方法来生成uuids。
另外,有关如何使用Python获取硬盘序列号的详细说明,请参阅this answer,如果这正是您要查找的内容。
答案 4 :(得分:0)
对于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)