How to get the txt value from the txt file above the search request. Python
-
There's a bachelorette who gets information about the diver's installed and writes a textbook.
pnputil.exe -e > "D:\drv.txt"
The result is approximately:
Опубликованное имя : oem5.inf Поставщик пакета драйвера: Canon Класс: Устройства обработки изображений Дата разработки и версия драйвера : 09/16/2010 11.3.0.1 Имя подписавшего : Microsoft Windows Hardware Compatibility Publisher
I need this text message to be searched on a keyword (e.g., "canon") and on the way out, there was information on the line above (in this case, "oem5.inf")
It's not hard to make a search, but that's how to put a line on top of me.
import os
os.system("d:\drv.bat")
a = 'Canon'
file = open('D:\drv.txt', 'r')
text = file.read()
if a in text:
#тут мог быть ваш код
-
You can dissolve the entire file on the vocabulary list. And then it's the technology to find the right dictionaries on one of the fields and to take the meaning of another field from them.
drivers = [] # здесь будут храниться словари с описанием драйверов, каждый словарь - один драйвер with open('D:\\drv.txt', 'r') as f: drv = {} # изначально словарь с описанием драйвера пустой line = f.readline() # читаем строку while line: # работаем пока очередная строка не будет пустой, что означает конец файла buf = line = line.strip() # чистим строку от пробелов и переводов строк с обеих концов if buf and buf[-1] == ":": # если последний символ - двоеточие, то продолжение на следующей строке line = f.readline().strip() # читаем следующую строку (ибо она есть продолжение предыдущей) buf += line # и дописываем её к предыдущей (в буфер) if ":" in buf: # если в буфере получилась строка вида "что-то : значение" # то разбиваем её по двоеточию и добавляем в словарь как 'drv[что-то] = значение' (предварительно почистив от пробелов с краёв) drv.update([map(lambda x: x.strip(), buf.split(":",1))])
if not line and drv: # если обнаружилась пустая строка (это разделитель между описаниями разных драйверов) и словарь с описанием не пустой drivers.append(drv) # значит надо добавить текущий словарь с описанием в общий список drv = {} # и начать собирать новое описание с пустого словаря line = f.readline() # читаем следующую строку чтобы начать её анализ с начала следующей итерации цикла
what = "logitech"
это просто цикл по всем элементам (которые словари) списка,
где если значение по ключу элемента соответствует критерию,
то достаётся значение по другому ключу и оно добавляется в выходной список
infs = [drv["Опубликованное имя"] for drv in drivers if what in drv["Поставщик пакета драйвера"].lower()]
print(infs)
Example of contents of a dictionary describing one of the drivers:
{
'Опубликованное имя': 'oem189.inf',
'Поставщик пакета драйвера': 'NVIDIA',
'Класс': 'Видеоадаптеры',
'Дата разработки и версия драйвера': '10/27/2017 23.21.13.8813',
'Имя подписавшего': 'Microsoft Windows Hardware Compatibility Publisher'
}
The result of finding the identified Logitech woods in my system.
['oem124.inf', 'oem125.inf', 'oem126.inf', 'oem147.inf', 'oem148.inf', 'oem149.inf']