文件夹似乎存在于 OS 中,但在 `sudo rm -rf dirname` 时静默失败
Folder seems to exist in OS but fails silently upon `sudo rm -rf dirname`
我正在尝试删除一个文件夹,但没有成功。我是sudo,拥有所有权限。
cd /path/to/parent
ls
001 003 005 007 009 011 013 015 017 019 021 dent_detections_3d.ply dent_spread_debug.png paint_chip_spread_debug.png
002 004 006 008 010 012 014 016 018 020 _det__grouped.json dent_detections_debug.json paint_chip_detections_debug.json
我想删除有问题的文件夹 003
。其他文件夹运行正常。
观察:
cd 003
给出 -bash: cd: 003: No such file or directory
sudo rm -rf 003
或 sudo rm -rf 003/
给出空输出,然后 ls
给出与上面相同的结果(003
存在)。
python
> import os
> path.os.exists("path/to/parent")
>> True
> path.os.exists("path/to/parent/003")
>> False
> os.mkdir("path/to/parent/003")
>>
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 17] File exists: '/path/to/parent/003'
这可能是什么原因造成的?如何调试这个?我希望删除该文件夹,我希望这种情况不再发生。
编辑以回答评论:
> ls -la
total 6144
drwxr-xr-x 2 noam root 0 Dec 28 13:28 .
drwxr-xr-x 2 noam root 0 Dec 9 18:41 ..
drwxr-xr-x 2 noam root 0 Dec 28 13:28 001
drwxr-xr-x 2 noam root 0 Dec 28 13:28 002
drwxr-xr-x 2 noam root 0 Dec 28 13:28 003
drwxr-xr-x 2 noam root 0 Dec 28 13:26 004
drwxr-xr-x 2 noam root 0 Dec 28 13:26 005
drwxr-xr-x 2 noam root 0 Dec 28 13:26 006
drwxr-xr-x 2 noam root 0 Dec 28 13:26 007
drwxr-xr-x 2 noam root 0 Dec 28 13:26 008
drwxr-xr-x 2 noam root 0 Dec 28 13:26 009
drwxr-xr-x 2 noam root 0 Dec 28 13:26 010
drwxr-xr-x 2 noam root 0 Dec 28 13:26 011
drwxr-xr-x 2 noam root 0 Dec 28 13:26 012
drwxr-xr-x 2 noam root 0 Dec 28 13:26 013
drwxr-xr-x 2 noam root 0 Dec 28 13:26 014
drwxr-xr-x 2 noam root 0 Dec 28 13:26 015
drwxr-xr-x 2 noam root 0 Dec 28 13:26 016
drwxr-xr-x 2 noam root 0 Dec 28 13:26 017
drwxr-xr-x 2 noam root 0 Dec 28 13:26 018
drwxr-xr-x 2 noam root 0 Dec 28 13:26 019
drwxr-xr-x 2 noam root 0 Dec 28 13:26 020
drwxr-xr-x 2 noam root 0 Dec 28 13:26 021
-rwxr-xr-x 1 noam root 684753 Dec 12 11:58 _det__grouped.json
-rwxr-xr-x 1 noam root 7604 Dec 12 11:58 dent_detections_3d.ply
-rwxr-xr-x 1 noam root 89902 Dec 12 11:58 dent_detections_debug.json
-rwxr-xr-x 1 noam root 377863 Dec 12 11:58 dent_spread_debug.png
-rwxr-xr-x 1 noam root 24 Dec 12 11:58 paint_chip_detections_debug.json
-rwxr-xr-x 1 noam root 362525 Dec 12 11:58 paint_chip_spread_debug.png
EDIT2 包含竞争条件是问题的信息
创建文件夹的相关代码块:
if os.path.exists(cluster_folder_path):
shutil.rmtree(cluster_folder_path)
os.mkdir(cluster_folder_path)
将 EDIT2 中的代码更改为
while os.path.exists(cluster_folder_path):
shutil.rmtree(cluster_folder_path)
os.mkdir(cluster_folder_path)
在继续创建文件夹之前强制删除该文件夹,从而防止竞争条件。
我无法理解为什么这种情况只发生在一个文件夹中,或者为什么是这个文件夹而不是其他文件夹。我也无法理解为什么在 Python 已经不是 运行 之后这种情况一直发生。
将接受能够解释这一点的答案。
我正在尝试删除一个文件夹,但没有成功。我是sudo,拥有所有权限。
cd /path/to/parent
ls
001 003 005 007 009 011 013 015 017 019 021 dent_detections_3d.ply dent_spread_debug.png paint_chip_spread_debug.png
002 004 006 008 010 012 014 016 018 020 _det__grouped.json dent_detections_debug.json paint_chip_detections_debug.json
我想删除有问题的文件夹 003
。其他文件夹运行正常。
观察:
cd 003
给出-bash: cd: 003: No such file or directory
sudo rm -rf 003
或sudo rm -rf 003/
给出空输出,然后ls
给出与上面相同的结果(003
存在)。
python
> import os
> path.os.exists("path/to/parent")
>> True
> path.os.exists("path/to/parent/003")
>> False
> os.mkdir("path/to/parent/003")
>>
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 17] File exists: '/path/to/parent/003'
这可能是什么原因造成的?如何调试这个?我希望删除该文件夹,我希望这种情况不再发生。
编辑以回答评论:
> ls -la
total 6144
drwxr-xr-x 2 noam root 0 Dec 28 13:28 .
drwxr-xr-x 2 noam root 0 Dec 9 18:41 ..
drwxr-xr-x 2 noam root 0 Dec 28 13:28 001
drwxr-xr-x 2 noam root 0 Dec 28 13:28 002
drwxr-xr-x 2 noam root 0 Dec 28 13:28 003
drwxr-xr-x 2 noam root 0 Dec 28 13:26 004
drwxr-xr-x 2 noam root 0 Dec 28 13:26 005
drwxr-xr-x 2 noam root 0 Dec 28 13:26 006
drwxr-xr-x 2 noam root 0 Dec 28 13:26 007
drwxr-xr-x 2 noam root 0 Dec 28 13:26 008
drwxr-xr-x 2 noam root 0 Dec 28 13:26 009
drwxr-xr-x 2 noam root 0 Dec 28 13:26 010
drwxr-xr-x 2 noam root 0 Dec 28 13:26 011
drwxr-xr-x 2 noam root 0 Dec 28 13:26 012
drwxr-xr-x 2 noam root 0 Dec 28 13:26 013
drwxr-xr-x 2 noam root 0 Dec 28 13:26 014
drwxr-xr-x 2 noam root 0 Dec 28 13:26 015
drwxr-xr-x 2 noam root 0 Dec 28 13:26 016
drwxr-xr-x 2 noam root 0 Dec 28 13:26 017
drwxr-xr-x 2 noam root 0 Dec 28 13:26 018
drwxr-xr-x 2 noam root 0 Dec 28 13:26 019
drwxr-xr-x 2 noam root 0 Dec 28 13:26 020
drwxr-xr-x 2 noam root 0 Dec 28 13:26 021
-rwxr-xr-x 1 noam root 684753 Dec 12 11:58 _det__grouped.json
-rwxr-xr-x 1 noam root 7604 Dec 12 11:58 dent_detections_3d.ply
-rwxr-xr-x 1 noam root 89902 Dec 12 11:58 dent_detections_debug.json
-rwxr-xr-x 1 noam root 377863 Dec 12 11:58 dent_spread_debug.png
-rwxr-xr-x 1 noam root 24 Dec 12 11:58 paint_chip_detections_debug.json
-rwxr-xr-x 1 noam root 362525 Dec 12 11:58 paint_chip_spread_debug.png
EDIT2 包含竞争条件是问题的信息
创建文件夹的相关代码块:
if os.path.exists(cluster_folder_path):
shutil.rmtree(cluster_folder_path)
os.mkdir(cluster_folder_path)
将 EDIT2 中的代码更改为
while os.path.exists(cluster_folder_path):
shutil.rmtree(cluster_folder_path)
os.mkdir(cluster_folder_path)
在继续创建文件夹之前强制删除该文件夹,从而防止竞争条件。
我无法理解为什么这种情况只发生在一个文件夹中,或者为什么是这个文件夹而不是其他文件夹。我也无法理解为什么在 Python 已经不是 运行 之后这种情况一直发生。
将接受能够解释这一点的答案。