2017-07-08 381 views
0

我最近一直在为考试而学习,并且我读的教科书告诉我,获取计算机序列号的命令(在CMD中)如下所示 - (作为降低盗版)。使用python和.bat文件获取计算机序列号

wmic bios get serialnumber 

我决定试试这个自己使用蟒蛇,在这里我希望得到我自己的电脑的序列号,我创建了一个批处理文件(.bat),并记录序列号到一个txt文件,我当时认为我可以在Python读出,这创造了更多的问题,如果有的话...这是我目前拥有的代码:

SerialNumber.bat(新蝙蝠文件的方式)

SET num=wmic bios get serialnumber 

%num% > serial.txt 

什么serial.txt看起来像(略有修改,不会泄露我的序列号)

enter image description here

Readtxt.py

# Trying to read in two different ways 
with open("serial.txt", "r") as file: 
    print(file.read()) 

lines = [] 
for line in open("serial.txt"): 
    lines.append(line) 
print(lines) 

,其输出:(未示出再次完整图像)

enter image description here

的问题是:

  1. 如何将序列号存储为某个字符串?
  2. 为什么每个不同的方法我用来读取提供不同的输出?

感谢任何答案:)

+1

[批次部分](HTTPS写入UTF-16-LE://计算器。 com/q/44880440/2152082) – Stephan

+2

看起来像unicode ....你可能需要解码它。尝试使用'rb'而不是'r'来阅读,并在末尾添加一个“.decode()”。 –

回答

1

当重定向到一个文件WMIC以BOM

> wmic bios get serialnumber >serial.txt 

> hex.exe serial.txt 
HEX:  +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0fabcdef 
0000000000: FF FE 53 00 65 00 72 00 69 00 61 00 6C 00 4E 00 .■S.e.r.i.a.l.N. 
0000000010: 75 00 6D 00 62 00 65 00 72 00 20 00 20 00 0D 00 u.m.b.e.r. . ... 

> type readtext.py 
with open("serial.txt", 'rb') as file: 
    print(file.read().decode('utf-16')) 

> py readtext.py 
SerialNumber 
5xxxxyyyy 
相关问题