Python - OSError: [Errno 2] No such file or directory

Python - OSError: [Errno 2] No such file or directory

我已经阅读了很多关于这个问题的问题,但我注意到它的发生有很多原因,而且还没有找到我的特定问题的答案。问题是,我不小心删除了一些文件并使用 photorec 尝试恢复它们(我在 Ubuntu 16.04 Xenial 上)。问题是,它恢复了 2600 多个文件夹!我正在编写一个小文件爬虫来删除我不需要的文件——我唯一感兴趣的文件是 .py、.jpg、.png 和 .mp3。这是我的爬虫代码:

import os

path=

for (path, dirs, files) in os.walk(path):
    for name in files:
        if name.endswith('.py') or name.endswith('.jpg') or name.endswith('.png') or name.endswith('.mp3'):
            continue
        else: os.remove(name)

我手动定义了'path',我做了一个测试,我打印了部分路径、目录和文件,它打印了我想要的。但是,当 运行 下面的代码时,它 returns:

OSError: [Errno 2] No such file or directory: 'f0272560.java'

我假设这是我尝试删除的第一个文件。我猜它在文件被删除后再次寻找它。这是否有意义,或者是否有其他引发错误的原因?我该如何解决这个问题?

提前致谢!

os.walk编辑的files list yield是非限定文件名。除非它们碰巧在工作目录中,否则 os.remove 无法通过不合格的名称删除它们,因为它不知道在哪里可以找到它们。变化:

os.remove(name)

os.remove(os.path.join(path, name))

所以你传递了文件的限定路径,而不仅仅是它的名字。

旁注:如果您从不需要 path 的原始定义,虽然效果很好,但用 os.walk 中的每个循环 path 覆盖它可能会造成混淆。您可能想要更改其中一个的名称,将顶层名称更改为 rootdir 或将循环变量名称更改为其他名称(例如 curdir)。