我编写了一个批处理脚本,通过Chocolatey和FOG部署到我们的网络,获取机器的序列号,然后通过.txt将其弹出一个带有序列号所属PC的名称的文件中:
net use y: \\192.168.4.104\shared
wmic bio get serialnumber > Y:\IT\SSoftware\Serial_Numbers\%COMPUTERNAME%.txt
net use y: /delete
文件夹Serial_Numbers随后用.txts填充,其中包含Campus中每台计算机的名称。考虑到这一点,我想编写一个Python脚本来获取并获取每个.txt名称和第二个内部字符串以形成字典,您可以在其中调用PC的名称,并返回序列号。
我知道如何创建字典,并从中调用,但我遇到了如何正确获取.txt的名称和第二个内部字符串的麻烦,任何帮助将不胜感激。
.txt文件的格式:
SerialNumber
#############
答案 0 :(得分:1)
您可以使用os.listdir列出目录文件nad list comprehension来过滤它们。
使用glob列出目录中的文件。
您只需阅读第一行并在填充字典时停止使用该文件即可完成:
import glob
d = {}
# loop over '.txt' files only
for filename in glob.glob('/path_to_Serial_Numbers_folder/*.txt'):
with open(filename, 'r') as f:
file_name_no_extension = '.'.join(filename.split('.')[:-1])
d[file_name_no_extension] = f.readline().strip()
print d
答案 1 :(得分:1)
import glob
data = {}
for fnm in glob.glob('*.txt'):
data[fnm[:-4]] = open(fnm).readlines()[1].strip()
或者,更简洁
import glob
data = {f[:-4]:open(f).readlines()[1].strip() for f in glob.glob('*.txt')}
在上面的词典理解中,
f[:-4]
是除最后四个字符外的文件名(即" .txt"),open(f).readlines()[1].strip()
是文件的第二行
对象,最终f
是glob.glob()
返回的文件名列表的元素。