diff --git a/pym/cl_utils.py b/pym/cl_utils.py index 4cfb1b4..c6a928a 100644 --- a/pym/cl_utils.py +++ b/pym/cl_utils.py @@ -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 #вернуть пути для запуска утилит