簡體   English   中英

python os.scandir將蘋果dmg,應用程序,捆綁包顯示為目錄

[英]python os.scandir shows apple dmg, app, bundle as directory

我正在編寫一個用於並行文件校驗和的程序。 我對子目錄的使用感到困惑,因為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個以上的文件並使CPU飽和。 我的工作站有2個CPU,每個CPU都有4個內核...但是會有SSD瓶頸。

此外,RAID 10文件服務器可以一次處理大約2-3個文件。

我是Python的新手,所以不要對復雜的代碼感到驚訝。

AlGORITM:1.檢查總共有多少個文件並決定使用MP(多處理或多線程)

  1. 遞歸檢查源路徑,排除隱藏文件和包...然后對它們運行校驗和sha512

  2. 每個目錄/子目錄必須具有自己的校驗和文件。 我不希望源路徑中有一個大的校驗和文件

我希望你明白。 有什么建議嗎?

問候

哈耶斯

“ Apps”(“ * .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/Library目錄的結果:

用戶/圖書館

色標帶有顏色並附加/

Applications目錄的結果:

應用領域

所有應用*.app都是目錄。

以及其他文件的結果:

###和其他文件的結果

*.dmg*.zip由於某些原因被標記為可執行文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM