Вопрос:

python os.scandir показывает apple dmg, app, bundle в качестве каталога

python macos bundle hidden scandir

91 просмотра

1 ответ

1 Репутация автора

Я пишу программу для параллельных файлов контрольных сумм. Я застрял с подсчетом подкаталогов, потому что python os.scandir () показывает Apple DMG, приложения в качестве каталога.

Пока у меня есть следующий код.

import os, sys

### variables
PATH_SRC = os.getcwd()
EXCLUDE_FILES = ('__', '.')
EXCLUDE_DIRS = ('__', '.', '*.app', '*.dmg')
LIST_FILES = []
LIST_DIRS = []

COUNT_DIRS = 0
COUNT_FILES = 0`

with os.scandir(PATH_SRC) as it:
  for entry in it:
    if not entry.name.startswith(EXCLUDE_FILES):
      if entry.is_dir() and entry.name.startswith(EXCLUDE_DIRS):
        LIST_DIRS.append(entry.path)
        COUNT_DIRS = COUNT_DIRS + 1
      elif entry.is_file():
        LIST_FILES.append(entry.path)
        COUNT_FILES = COUNT_FILES + 1

print ('Source path contains ', COUNT_DIRS, ' subdirectories.')
print ('Source path contains ', COUNT_FILES, ' file(s).')


print (LIST_DIRS)
print (LIST_FILES)

Исходный путь содержит 10 подкаталогов, но приведенный выше код показывает 16, потому что есть некоторые приложения, dmg, и они отображаются как каталог.

Мне нужно рекурсивно перечислить файлы внутри исходного пути и исключить скрытые и пакеты (dmg, app). Подсчитайте их ... это будет использоваться в качестве решения, использовать ли распараллеливание или нет. Я обычно копирую фотографии с флеш-карт, но иногда я копирую всю попытку на свой файловый сервер.

Идея заключается в том, чтобы ... подсчитать все файлы в исходном пути ... если существует, например, более 10 файлов ... запустить параллельную контрольную сумму файлов ... SSD может обрабатывать около> 4 файлов одновременно и загружать процессор. У моей рабочей станции есть 2 процессора с 4 ядрами в каждом ... но будет узкое место SSD.

Кроме того, файловый сервер RAID 10 может обрабатывать около 2-3 файлов одновременно.

Я новичок в Python, поэтому не удивляйтесь сложному коду.

Алгоритм: 1. проверьте, сколько файлов всего и определите для MP (многопроцессорность или многопоточность)

  1. рекурсивно проверять исходный путь, исключать скрытые файлы и пакеты ... затем запускать для них контрольную сумму sha512

  2. у каждого каталога / поддиректора должен быть свой файл контрольной суммы. Я не хочу один большой файл контрольной суммы в исходном пути

Я надеюсь, вы понимаете. Пожалуйста, какие-либо предложения?

С уважением

Hajes

Автор: David Hajes Источник Размещён: 08.11.2017 11:16

Ответы (1)


0 плюса

1412 Репутация автора

«Приложения» (« * .app ») - это действительно каталоги.

Посмотрите на команду Mac OS ls :

ls - список содержимого каталога

Доступны следующие опции:

...

-F      Display a slash (`/') immediately after each pathname that is a directory, an asterisk (`*')
         after each that is executable, an at sign (`@') after each symbolic link, an equals sign (`=')
         after each socket, a percent sign (`%') after each whiteout, and a vertical bar (`|') after
         each that is a FIFO
 -G      Enable colorized output.  This option is equivalent to defining CLICOLOR in the environment.
         (See below.)

...

Результаты для User/Librarydir:

Пользователь / Library

Dirs окрашены и добавлены /

Результаты для Applicationsdir:

Приложения

Все приложения *.appявляются каталогами.

И результаты для других файлов:

### И результаты для других файлов

*.dmgи *.zipпомечены как исполняемые по некоторым причинам.

Автор: B-GangsteR Размещён: 09.11.2017 01:52
Вопросы из категории :
32x32