[英]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(多處理或多線程)
遞歸檢查源路徑,排除隱藏文件和包...然后對它們運行校驗和sha512
每個目錄/子目錄必須具有自己的校驗和文件。 我不希望源路徑中有一個大的校驗和文件
我希望你明白。 有什么建議嗎?
問候
哈耶斯
“ 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.