Advertisement
Woobinda

Модуль OS

Sep 18th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.20 KB | None | 0 0
  1. """
  2. Функция рекурсивно выводит список всех файлов в текущей директории и во всех вложенных подкаталогах.
  3. """
  4.  
  5. import os
  6.  
  7. def get_file_list(dir_path=os.getcwd()):
  8.     file_list = []
  9.     for file in os.listdir(dir_path):               #обходит текущий каталог
  10.         path = os.path.join(dir_path, file)         #генерирует путь к найденому объекту
  11.         if not os.path.isdir(path):                 #если найденый объект не папка
  12.             file_list.append(path)                  #добавляет файл к результату
  13.         else:
  14.             file_list += get_file_list(path)        #если найденый объект - папка, рекурсивно обходит ее содержимое;
  15.     return file_list
  16.  
  17.  
  18. """
  19. Интерпретация системной утилиты grep. В текущем каталоге будут найдены файлы с питоновским расширением, в которых будет найдена поисковая строка 'import os'.
  20. """
  21.  
  22. import fnmatch
  23.  
  24. mask = '*.py'
  25. pattern = 'import os'
  26.  
  27. def find_pattern(dir_path, mask, pattern):
  28.     result_list = []
  29.     for file in os.listdir(dir_path):                   #обходит объекты в текущем каталоге
  30.         if fnmatch.fnmatch(file, mask):                     #если расширение файла совпадает с заданым
  31.             name = os.path.join(os.getcwd() + '/' + file)       #генерируем системный путь к файлу
  32.             try:
  33.                 data = open(name, 'r').read()           #читает файл
  34.                 if data.find(pattern) != -1:            #если есть совпадение по заданому шаблону (pattern)
  35.                     result_list.append(name)            #добавляет файл к результату;
  36.             except:
  37.                 pass
  38.     return result_list
  39.  
  40.  
  41. """
  42. Функция выводит статистическую информацию о текущем каталоге: общий размер каталога в байтах, число папок, файлов и их размеры.
  43. """
  44.  
  45. def get_local_info(dir_path=os.getcwd()):
  46.     result = [[], [], 0]                                    #шаблон для сбора результатов
  47.     for name in os.listdir(dir_path):                       #смотрим объекты в текущем каталоге
  48.         path = os.path.join(dir_path, name)                
  49.         if not os.path.isdir(path):                         #если найденый объект не папка
  50.             size = os.path.getsize(name)                    #фиксируем размер объекта
  51.             result[0].append({name: size})                  #доабвляем к результату
  52.             result[2] += size
  53.         else:
  54.             size = os.path.getsize(name)                    #если объект - папка
  55.             result[1].append({name: size})
  56.             result[2] += size
  57.     print( 'file list | size (bytes), count %s \n' %(len(result[0])) + '\n'.join(str(value) for value in result[0]) + '\n\n' + 'folder list | size (bytes), count %s \n' %(len(result[1])) + '\n'.join(str(value) for value in result[1]) + '\n\n' + 'total size: %s bytes' % result[2] + '\n')                             #выводим на экран форматированные результаты
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement