QNAP NAS幽灵文件夹致glob生成器抛出FileNotFoundError求助
背景
- 编写Python脚本对齐QNAP NAS音乐库文件夹结构与MP3标签(文件夹和标签均需修复)
- 父文件夹映射路径为
/Volumes/Multimedia/Music/ - 本地设备为MacBook
问题
- QNAP NAS存在一个幽灵/损坏文件夹
- 该文件夹持续出现在
path.glob('*/*.mp3')的遍历结果中 - 执行
for fyl in path.glob('*/*.mp3'):时会抛出FileNotFoundError
已尝试方案
- 刷新Mac Finder缓存:重启Finder无效
- 从Mac端删除该文件夹:多种终端命令执行均失败,命令及结果如下:
% ls T2* ls: T2Y97F~A: No such file or directory % rm -rf "T2Y97F~A" % ls T2* ls: T2Y97F~A: No such file or directory % find . -type d -name T2* ./T2Y97F~A % ls "./T2Y97F~A" ls: ./T2Y97F~A: No such file or directory % rm -rf "./T2Y97F~A" % find . -type d -name T2* ./T2Y97F~A % find . -type d -name T2Y97F* -exec rm -rf {} + find: ./T2Y97F~A: No such file or directory
- 在Python中用try/except捕获错误:错误发生在glob迭代器本身,无法被捕获,代码及错误如下:
## # glob returns a bad/ghost folder that isn't fully recognised # FileNotFoundError escapes from except block # continue doesn't seem to work import os, csv, logging from pathlib import Path, PurePosixPath # Configure Logging logging.basicConfig( level=logging.INFO, filename= '' + PurePosixPath(__file__).stem + '.log', format='%(asctime)s\t|\t|\t%(levelname)s\t|\t%(message)s' ) ctr = 0 dirSrc = '/Volumes/Multimedia/Music/' # then /{artist}/ path = Path(dirSrc) # Get any immediate children of /{artist}/ # glob is a generator for fyl in path.glob('*/*.mp3'): # Stop after 50 whilst in dev/test ctr = ctr + 1 if ctr >= 50: break try: logging.info('Handling {}'.format(str(fyl))) except FileNotFoundError as e: logging.exception('Problem handling {src} because {e}'.format(src = str(fyl), e = e)) continue # Carry on with for...loop except OSError as e: logging.exception('Problem handling {src} because {e}'.format(src = str(fyl), e = e)) continue # Carry on with for...loop except Exception as e: logging.exception('Problem handling {src} because {e}'.format(src = str(fyl), e=e))
执行代码后抛出错误:
% python3 ./ghostFolder.py Traceback (most recent call last): File "/Users/john_skelton/Workspaces/mp3tagging/./ghostFolder.py", line 24, in <module> for fyl in path.glob('*/*.mp3'): File "/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/pathlib.py", line 1034, in glob for p in selector.select_from(self): File "/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/pathlib.py", line 457, in _select_from for p in self.successor._select_from(path, is_dir, exists, scandir): File "/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/pathlib.py", line 440, in _select_from with scandir(parent_path) as scandir_it: FileNotFoundError: [Errno 2] No such file or directory: '/Volumes/Multimedia/Music/T2Y97F~A'
请求帮助
希望实现以下任一或全部目标:
- 删除该幽灵/损坏文件夹
- 修改Python代码,使其在遇到单个文件/项失败时能继续迭代
内容的提问来源于stack exchange,提问作者JohnSk
相关产品推荐
相关产品推荐

