Python 使用 map 和 os.remove 删除多个文件

Sha*_*yHa 0 python operating-system glob

我正在尝试使用此方法删除多个文件:


map(os.remove, glob.glob("*.pdf"))
Run Code Online (Sandbox Code Playgroud)

我收到带有 pdf 扩展名的文件列表,但这不会删除任何文件。

我的解决方案是用 包裹这张地图list()

还有其他不需要使用列表或其他东西的解决方案吗?

fil*_*den 5

使用for循环:

for i in glob.glob('*.pdf'):
    os.remove(i)
Run Code Online (Sandbox Code Playgroud)

之所以map(...)其本身不起作用的map(...)是它将返回一个生成器,并且只有在实际从生成器访问项目后才会计算表达式。

此外, 的要点map(...)是将在每个项目上调用的函数返回的表达式的结果进行分组,但这在这里并没有真正意义,因为它os.remove(...)实际上不返回任何内容(或者换句话说,返回None),因此,由于组装 s 列表None并没有多大作用(无论如何你都会立即将其扔掉),因此使用循环for是完成此任务的更合适的方法。

  • @ShayHa `for` 循环是*正确的*方法。它简单、直接、清晰。你为什么要避免这种情况? (3认同)