结合.txt的名称和第二个内部字符串以在 Python 中创建字典



我编写了一个批处理脚本,该脚本通过Chocolatey和FOG部署到我们的网络,该脚本获取机器的序列号,然后通过.txt将其弹出到带有序列号所属PC名称的文件中:

net use y: \192.168.4.104shared
wmic bio get serialnumber > Y:ITSSoftwareSerial_Numbers%COMPUTERNAME%.txt
net use y: /delete

文件夹Serial_Numbers随后填充了带有校园中每台计算机名称的.txts。 考虑到这一点,我想编写一个 Python 脚本来遍历并获取每个.txt名称和第二个内部字符串以形成一个字典,您可以在其中调用 PC 的名称,并返回序列号。

我知道我将如何创建字典并从中调用,但是我在弄清楚如何正确获取.txt的名称和第二个内部字符串时遇到了麻烦,任何帮助将不胜感激。

.txt文件的格式:

SerialNumber
#############

您可以使用 os.listdir 列出目录文件和列表理解以过滤它们。

使用 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
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()是文件的第二行对象和最终
  • fglob.glob() 返回的文件名列表中的一个元素。

最新更新