|
|
|
@ -21,20 +21,95 @@ from re import search
|
|
|
|
|
import os
|
|
|
|
|
import types
|
|
|
|
|
|
|
|
|
|
def getdirlist(s_path):
|
|
|
|
|
#Получить список директорий по указаному пути
|
|
|
|
|
fdir=filecmp.dircmp(s_path, s_path)
|
|
|
|
|
dir_list=fdir.common_dirs
|
|
|
|
|
return dir_list
|
|
|
|
|
|
|
|
|
|
#вернуть случайный пароль
|
|
|
|
|
def genpassword():
|
|
|
|
|
def columnWrite(*cols):
|
|
|
|
|
'''Вывод данных по колонкам, причем, если данные не вмещаются в указнаную
|
|
|
|
|
колонку, то они переносятся на следующую строку в нужную колонку.
|
|
|
|
|
|
|
|
|
|
Параметры:
|
|
|
|
|
cols множестово пар: текст, ширина колонки, причем, если у последней
|
|
|
|
|
колонки не указывать ширину, то она будет выведена вся.
|
|
|
|
|
|
|
|
|
|
Пример: columnWrite( "Some text", 10, "Next column", 20 )
|
|
|
|
|
'''
|
|
|
|
|
# перевести кортеж в список, т.к. изменяется
|
|
|
|
|
cols = list(cols)
|
|
|
|
|
# перевести текст в юникод, заодно перевести числа в строку
|
|
|
|
|
for i in xrange(0,len(cols),2):
|
|
|
|
|
cols[i] = (str(cols[i])).decode('utf8')
|
|
|
|
|
|
|
|
|
|
# флаг "есть еще текст для вывода"
|
|
|
|
|
repeat = True
|
|
|
|
|
while repeat:
|
|
|
|
|
# сбросить итератор на первый элемент
|
|
|
|
|
q = 0
|
|
|
|
|
repeat = False
|
|
|
|
|
# пока не закончили перебирать параметры (перебираем по парам)
|
|
|
|
|
while q < len(cols):
|
|
|
|
|
# если это последний параметр, и для него не указана ширина
|
|
|
|
|
if q == len(cols)-1:
|
|
|
|
|
# выводим его полностью не смотря на ширину окна
|
|
|
|
|
print cols[q],
|
|
|
|
|
cols[q] = ''
|
|
|
|
|
else:
|
|
|
|
|
# вывести часть строки не больше указанной ширины колонки
|
|
|
|
|
print (cols[q][:cols[q+1]].ljust(cols[q+1])).encode('utf8'),
|
|
|
|
|
# остальную часть строки оставить на следующую итерацию
|
|
|
|
|
cols[q] = cols[q][cols[q+1]:]
|
|
|
|
|
# если от строки что то осаталось
|
|
|
|
|
if len(cols[q]) > 0:
|
|
|
|
|
# отметить запуск еще одной итерации по параметрам
|
|
|
|
|
repeat = True
|
|
|
|
|
# следующая пара
|
|
|
|
|
q += 2
|
|
|
|
|
# колонки отображены
|
|
|
|
|
print
|
|
|
|
|
|
|
|
|
|
def justify(s,width):
|
|
|
|
|
'''Выровнить текст по ширине
|
|
|
|
|
|
|
|
|
|
Параметры:
|
|
|
|
|
s выводимая строка
|
|
|
|
|
width ширина на которую надо выровнить строку
|
|
|
|
|
|
|
|
|
|
Возвращаямые параметры:
|
|
|
|
|
Выровненная строка
|
|
|
|
|
'''
|
|
|
|
|
# если подана строка без пробелов - прекратить обработку
|
|
|
|
|
if s.find(' ') == -1:
|
|
|
|
|
return s
|
|
|
|
|
pos = 0
|
|
|
|
|
# переводим в юникод для правильного вычисления длины
|
|
|
|
|
s = s.decode( 'utf-8' )
|
|
|
|
|
# пока длина строки меньше указанной
|
|
|
|
|
while len(s) < width:
|
|
|
|
|
# находим очередной пробел
|
|
|
|
|
pos = s.find( ' ', pos )
|
|
|
|
|
# если не найден искать сначала
|
|
|
|
|
if pos == -1:
|
|
|
|
|
pos = s.find(' ')
|
|
|
|
|
# вставить в позицию еще один пробел
|
|
|
|
|
s = s[:pos] +' ' +s[pos:]
|
|
|
|
|
# оставить удвоенный пробел
|
|
|
|
|
pos += 3
|
|
|
|
|
# вернуть строку в utf
|
|
|
|
|
return s.encode('utf-8')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def genpassword(passlen=9):
|
|
|
|
|
'''Вернуть случайный пассворд указанной длины
|
|
|
|
|
|
|
|
|
|
Параметры:
|
|
|
|
|
passlen длина пароля который нужно сгенерировать
|
|
|
|
|
|
|
|
|
|
Возвращаемые параметры:
|
|
|
|
|
Сгенерированный пароль указанной длины
|
|
|
|
|
'''
|
|
|
|
|
res=''.join([choice(string.ascii_letters+string.digits)\
|
|
|
|
|
for i in xrange(9)])
|
|
|
|
|
for i in xrange(passlen)])
|
|
|
|
|
return res
|
|
|
|
|
|
|
|
|
|
#заполнить строку указанным количеством символов
|
|
|
|
|
def fillstr(char, width):
|
|
|
|
|
'''Заполнить строку указанным числом символов. Псеводоник символ*кол-во'''
|
|
|
|
|
return str(char) * width
|
|
|
|
|
|
|
|
|
|
#вернуть пути для запуска утилит
|
|
|
|
|