Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- --------------
- Реализация консольной unix-команды ls в расширенном формате(ls -l)
- Платформа: Linux
- --------------
- '''
- import os
- import datetime
- from pwd import getpwuid
- from grp import getgrgid
- class color:
- BLUE = '\033[94m'
- CYAN = '\033[96m'
- END = '\033[0m'
- def get_rights(filename, result_row): #- функция, в которой мы получаем строку с привелегиями для владельца
- if (os.path.isdir(filename)):
- rights_path = 'd'
- else:
- rights_path = '-'
- if (os.access(filename, os.R_OK)):
- rights_path += 'r'
- else:
- rights_path += '-'
- if (os.access(filename, os.W_OK)):
- rights_path += 'w'
- else:
- rights_path += '-'
- if (os.access(filename, os.X_OK)):
- rights_path += 'x'
- else:
- rights_path += '-'
- result_row.append(rights_path)
- def get_name_of_owner(filename, result_row): #-получаем имя владельца файла
- result_row.append(getpwuid(os.stat(filename).st_uid).pw_name)
- def get_name_of_group(filename, result_row): # получаем имя владеющей группы
- result_row.append(getgrgid(os.stat(filename).st_gid).gr_name)
- def get_size(filename, result_row): #- получаем размер файла
- result_row.append(os.stat(filename).st_size)
- def get_modification_time(filename, result_row): #время модификации файла
- time_in_sec = os.path.getmtime(filename)
- result_row.append(str(datetime.datetime.fromtimestamp(time_in_sec))) #конвертируем из секунд в привычный календарный формат
- def get_colored_filename(filename, result_row): # "раскрашиваем" имя объекта в зависимости от его типа
- if (os.path.isdir(filename)):
- colored_name = color.BLUE + filename + color.END
- elif (os.path.islink(filename)):
- colored_name = color.CYAN + filename + color.END
- else:
- colored_name = filename
- result_row.append(colored_name)
- curr_path = os.getcwd()
- dir_list = os.listdir(curr_path)
- dir_list.sort()
- num_of_obj= len(dir_list)
- print ("Total: ", num_of_obj, "files/dir.") # выводим общие число файлов/каталогов
- result_array=[]
- for file in dir_list:
- result_row=[] #-список, содержащий элементы информации для n-го файла
- get_rights(file, result_row)
- get_name_of_owner(file, result_row)
- get_name_of_group(file, result_row)
- get_size(file, result_row)
- get_modification_time(file, result_row)
- get_colored_filename(file, result_row)
- result_array.append(result_row)
- for row in result_array:
- info_string=''
- for element in row:
- info_string += str(element) + ' '
- print(info_string)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement