将一个.txt的名称和第二个内部字符串组合起来,在Python中创建一个字典

2024-10-04 03:15:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我知道如何创建字典,并从中调用它,但我很难弄清楚如何正确地获取.txt的名称和第二个内部字符串,任何帮助都将不胜感激。你知道吗

.txt文件格式:

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

Tags: 文件字符串网络txt脚本名称机器net
2条回答
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()返回的文件名列表的元素。你知道吗

您可以使用os.listdir列出目录文件并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

相关问题 更多 >