文件删不掉提示文件正在使用,可能是自己开的窗口
记录一个报错信息把人往沟里带的坑,顺带一条排查顺序。
当时的任务:批量归档词表,最后一版重复的要删掉。回收站删失败、改名失败、挪盘失败,报错始终是同一行:
OSError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。
我以为按网上教的做总会有结果:开任务管理器,挨个关进程。照做了一小时。任务管理器、杀毒软件锁定列表、眼熟的窗口关了重开,没有任何收获。问题出在报错本身——「另一个程序」让人去找「谁打开了这个文件」,可真凶没打开任何文件。
第二天用 A/B 对照钉死:
cd /c/Users/Administrator/Desktop/词表分析
ls -la # 文件在,看得见
rm -f 蓝海词-A级可争取.csv # 删不掉,还是 32
cd /c/Users/Administrator/Desktop
rm -f 词表分析/蓝海词-A级可争取.csv # 同一个文件,删掉了
命令行窗口的当前目录停在那个文件夹里。它没打开任何文件,光「停在那儿」就钉住了文件夹——里面的文件能正常复制走,删不掉的只有文件夹本身。
两条规矩:
- 先按错误码分流:5 号「拒绝访问」走权限,32 号「正在使用」走占用,两条线别混。
- 占用类按成本排:切目录(3 秒)→ 关进程(tasklist,1 分钟)→ 权限最后。顺序反了,时间全耗在杀进程上,我就是这么废掉一小时的。
重启能解决一次,治不了下次。删之前先 cd 走,一行的事。
至于 cwd 锁目录锁在系统哪一层,我没深究,反正对照结果摆在那。
完整的复现过程写在博客:
浙公网安备 33010602011771号