Форум сайта python.su
Здравствуйте, если хотите немного ужастиков к вечеру, то вот мой код:
import re from collections import defaultdict from ldap3 import Server, Connection, AUTO_BIND_NO_TLS, SUBTREE open("C:\ldap\ldap.html", "w")# Очищаю предыдущий вариант файла (или удаляю файл, фиг его знает, надо проверить) # Заполняю HTML with open("C:\ldap\ldap.html", "a") as file: file.write( '<html>\n<head>\n<meta charset="windows-1251" />\n<title></title>\n<meta name="keywords" content="" />' '\n<meta name="description" content="" />\n<link href="style.css" rel="stylesheet">\n</head>\n<body>\n<style>\np\n{\nborder: 1px solid black;\npadding: 10px;\nfont: 12pt/10pt sans-serif;\n}\n</style>\n<div class="wrapper">\n<header class="header">\n<center>Внутренние номера</center>\n</header>' '\n<div class="middle">\n' '\n') file.close() def get_ldap_info1(officeselector): # Конект к AD, получение данных и запись их в словарь with Connection(Server('айпи', port=389, use_ssl=False), auto_bind=AUTO_BIND_NO_TLS, user='логин', password='пароль') as c: if officeselector == 'OU=Офис1': a = 'OU=Офис1' elif officeselector == 'OU=Офис2': a = 'OU=Офис2' elif officeselector == 'OU=Офис3': a = 'OU=Офис3' elif officeselector == 'OU=Офис4': a = 'OU=Офис4' c.search(search_base=a + ',OU=ОУ,DC=corp,DC=ОУ,DC=ru', search_filter='(&(objectClass=user))', search_scope=SUBTREE, attributes=['name', 'telephoneNumber'], get_operational_attributes=True) defdict = defaultdict(list) # Создаю словарь списков for a in range(len(c.response)): # получаю значения и заполняю словарь uname = str(c.response[a]['attributes']['name']) uphone = str(c.response[a]['attributes']['telephoneNumber']) key = [uphone] val = [uname] for i in range(len(val)): # Заполняю словарь if key[i] != '[]': # Если номер (ключ) пустой не пустой, то добавляю в словарь defdict[key[i]].append((val[i])) return defdict def writephone(a,officeselector): if officeselector == 1: officenumber = '1' elif officeselector == 2: officenumber = '2' elif officeselector == 3: officenumber = '3' elif officeselector == 4: officenumber = '4' with open("C:\ldap\ldap.html", "a") as file: file.write( '\n<div class="container">\n<main class="content'+officenumber+'">\n<center>'+'Офис '+officenumber+'</center>\n</main>\n</div>\n<aside class="right-sidebar'+officenumber+'">\n<center>Номер</center>') file.close() for k in a.keys(): with open("C:\ldap\ldap.html", "a") as file: file.write('<p align="left">'+k.strip('[]')+'\n</p>') file.close() with open("C:\ldap\ldap.html", "a") as file: file.write('\n</aside>\n') file.close() def writename(a, officeselector): if officeselector == 1: officenumber = '1' writephone(get_ldap_info1('OU=Офис1'), 1) elif officeselector == 2: officenumber = '2' writephone(get_ldap_info1('OU=Офис2'), 2) elif officeselector == 3: officenumber = '3' writephone(get_ldap_info1('OU=Офис3'), 3) elif officeselector == 4: officenumber = '4' writephone(get_ldap_info1('OU=Офис4'), 4) with open("C:\ldap\ldap.html", "a") as file: file.write( '\n<aside class="left-sidebar'+officenumber+'">\n<center>Имя</center>\n') file.close() for k in a.keys(): fr = ' '.join(a[k]) lb = re.sub(r'\[\d+\]', '', fr) # Убираю квадратные скобки (регулярное выражение) with open("C:\ldap\ldap.html", "a") as file: file.write('<p align="left">' + lb + '\n</p>') file.close() with open("C:\ldap\ldap.html", "a") as file: file.write('\n</aside>\n') file.close() writename(get_ldap_info1('OU=Офис1'), 1) writename(get_ldap_info1('OU=Офис2'), 2) writename(get_ldap_info1('OU=Офис3'), 3) writename(get_ldap_info1('OU=Офис4'), 4) with open("C:\ldap\ldap.html", "a") as file: file.write( '</div>\n</div>\n</body>\n</html>') file.close()
Отредактировано artisstm (Дек. 18, 2017 15:54:06)
Офлайн
artisstmСмысл? Флаг A - добавить, W - переписать или записать. Если бы ты в своем with open… написал флаг W, то все внутри бы стерлось и записалось бы новое.
open(“C:\ldap\ldap.html”, “w”)# Очищаю предыдущий вариант файла (или удаляю файл, фиг его знает, надо проверить) # Заполняю HTML with open(“C:\ldap\ldap.html”, “a”) as file:
spisok = {...} # твой список sorted_list = sorted([x for x in spisok.keys()]) keys = {i: spisok[i] for i in sorted_list}
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Офлайн
Спасибо за подсказку, список сделал двумерным массивом, код уменьшился раза в 2))
Офлайн