我正在为并行文件校验和编写一个程序。因为python ()显示了Apple,应用程序作为目录,所以我只能使用子目录计数。
到目前为止,我已经得到了以下代码。
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)。Count them...it将用作是否使用并行化的决定。我通常从闪存卡复制照片,但有时我会在我的文件服务器上复制整个尝试。
思想在它的背后,is...count源程序中的所有文件,path...if中有10多个文件用于example...run并行校验,files...SSD可以一次处理大约4个文件,并使CPU饱和。我的工作站有2个CPU,有4个核心each...but,会出现SSD瓶颈。
此外,RAID 10文件服务器可以同时处理大约2-3个文件。
我是Python新手,所以不要对复杂的代码感到惊讶。
AlGORITM: 1.检查文件总数并决定为MP (多线程还是多线程)
我希望你能理解。有什么建议吗?
问候
哈杰斯
发布于 2017-11-09 01:52:13
"Apps“("*.app")实际上是目录。
查看Mac OS命令。 ls:
ls --列出目录内容 可供选择的有: ..。 -F在每个可执行文件之后显示一个斜杠(
/') immediately after each pathname that is a directory, an asterisk (*'),在每个套接字后面显示一个at符号(@') after each symbolic link, an equals sign (='),在每个FIFO -G启用彩色输出后显示一个百分比符号(%') after each whiteout, and a vertical bar (-G‘)。此选项相当于在环境中定义CLICOLOR。(见下文) ..。
User/Library dir的结果:

Dirs是着色的,并由/追加
Applications dir的结果:

所有的应用程序*.app都是脏的。
以及其他档案的结果:

由于某种原因,*.dmg和*.zip被标记为可执行文件。
https://stackoverflow.com/questions/47191345
复制相似问题