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

时间:2014-12-29 17:21:37

标签: python batch-file dictionary

我编写了一个批处理脚本,通过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
#############

2 个答案:

答案 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()是文件的第二行 对象,最终
  • fglob.glob()返回的文件名列表的元素。