Аналог "azk_dir_port_listing.bat", только на Python3.
Отступы важны!
«
#22.04.2018 18:17 IRKT (изменен)
#13.02.2018 00:32 IRKT (создан)
#d.aryshtaev@bftcom.com
#Из названия папки, которая дожна быть именована в соответствии с форматом: <Версия АЦК>_<СУБД>_<порт СП>_<произвольный текст>
#утилита извлекает значение паттерна <порт СП> и сохраняет его в переменной s_port.
#Например, из названия папки "2.43.0.166e_FB_21013_BOD_170914" извлекает "21013".
import os, time, collections, sys, webbrowser
#Инициализация списков:
ls_port=[]
ls_port_ok=[]
ls_port_bad=[]
ls_port_dupl=[]
ls_port_ix = 0
ls_port_ok_ix = 0
ls_port_bad_ix = 0
ls_port_dupl_ix = 0
#Обработка папок:
ddirs = [d for d in os.listdir('.') if os.path.isdir(d)]
for d in ddirs:
s_port = d[d.find("_",d.find("_")+1)+1:d.find("_",d.find("_",d.find("_")+1)+1)]
try:
i_port = int(s_port)
ls_port_ix = ls_port_ix + 1
ls_port.insert(ls_port_ix, i_port)
except ValueError:
ls_port_bad_ix = ls_port_bad_ix + 1
ls_port_bad.insert(ls_port_bad_ix, s_port)
#Проверка списка ls_port на наличие дублей (информация о дублях заносится в список ls_port_dupl):
for tmpvar in ls_port:
if ls_port.count(tmpvar) > 1:
ls_port.remove(tmpvar)
ls_port_dupl.insert(ls_port_dupl_ix, tmpvar)
#Убираем дубли из списков
ls_port = list(set(ls_port))
ls_port_dupl = list(set(ls_port_dupl))
ls_port_bad = list(set(ls_port_bad))
#Сортировка списков:
ls_port.sort()
ls_port_bad.sort()
ls_port_dupl.sort()
#Поиск пропущенных (по порядку) портов в списке:
for tmpvar in ls_port:
ls_port_ok_ix = ls_port_ok_ix + 1
if ls_port.index(tmpvar) > 0:
if (tmpvar - ls_port[ls_port.index(tmpvar)-1]) > 1:
#Если найдены пропущенные порты, то на их место ставим пустую строку, чтобы в конечном файле их было хорошо видно, затем найденный порт и приращиваем поисковый индекс:
ls_port_ok.insert(ls_port_ok_ix, '')
ls_port_ok.insert(ls_port_ok_ix, tmpvar)
ls_port_ok_ix = ls_port_ok_ix + 1
else:
ls_port_ok.insert(ls_port_ok_ix, tmpvar)
else:
ls_port_ok.insert(ls_port_ok_ix, tmpvar)
#ls_port.insert(ls_port.index(tmpvar), 0)
#Вывод списков на экран:
#print("Все порты в названии папок:\n", ls_port, "\n")
#print("Дублирующиеся порты:\n", ls_port_dupl, "\n")
#print("Некорректные порты:\n", ls_port_bad, "\n")
#Вывод списков в файл:
filename = "azkport_listing.txt"
tmpdir=os.environ['TEMP']
filepath = os.path.join(tmpdir, filename)
ss_out = sys.stdout
f = open(filepath, 'w')
sys.stdout = f
if len(ls_port_ok) > 0:
#print("Все порты в названии папок:\n", ls_port_ok)
for tmpvar in ls_port_ok:
print(tmpvar)
if len(ls_port_dupl) > 0: print("\nДублирующиеся порты:\n", ls_port_dupl)
if len(ls_port_bad) > 0: print("\nНекорректные порты:\n", ls_port_bad)
sys.stdout = ss_out
f.close()
#Открыть файл в ассоциированном приложении:
webbrowser.open(filepath)
#time.sleep(10)
»
Подписаться на:
Комментарии к сообщению (Atom)
Архив
-
►
2019
(44)
- декабря (2)
- октября (6)
- сентября (9)
- августа (1)
- июля (1)
- июня (2)
- мая (2)
- апреля (2)
- марта (2)
- февраля (9)
- января (8)
-
▼
2018
(54)
- декабря (4)
- ноября (3)
- октября (6)
- сентября (4)
- августа (2)
- июля (2)
- мая (3)
- апреля (4)
- марта (11)
- февраля (6)
- января (9)
-
►
2017
(55)
- декабря (4)
- ноября (14)
- октября (1)
- сентября (3)
- августа (10)
- июля (2)
- июня (5)
- мая (2)
- апреля (3)
- марта (4)
- февраля (4)
- января (3)
-
►
2016
(111)
- декабря (12)
- ноября (4)
- октября (14)
- сентября (7)
- августа (7)
- июля (14)
- июня (12)
- мая (8)
- апреля (5)
- марта (16)
- февраля (10)
- января (2)
-
►
2015
(96)
- декабря (2)
- ноября (4)
- октября (3)
- сентября (6)
- августа (2)
- июля (2)
- июня (2)
- мая (11)
- апреля (14)
- марта (24)
- февраля (21)
- января (5)
-
►
2014
(72)
- декабря (18)
- ноября (16)
- октября (2)
- сентября (7)
- августа (4)
- июля (1)
- июня (4)
- мая (5)
- апреля (3)
- марта (3)
- февраля (6)
- января (3)
-
►
2013
(33)
- декабря (3)
- ноября (2)
- октября (3)
- сентября (2)
- августа (1)
- июля (1)
- июня (2)
- мая (5)
- апреля (2)
- марта (2)
- февраля (1)
- января (9)
-
►
2012
(181)
- ноября (6)
- октября (11)
- сентября (6)
- августа (5)
- июля (6)
- июня (25)
- мая (24)
- апреля (14)
- марта (20)
- февраля (38)
- января (26)
Комментариев нет:
Отправить комментарий