为什么我的代码删除了文件夹中的所有内容?

时间:2020-04-22 23:38:38

标签: python python-3.x pycharm

我编写了代码来检测目录中的所有.exe文件,但是它删除了文件夹中的所有内容。如何更改代码以使其仅删除.exe文件?

import os
import shutil

dir_name = "/Users/plapl/Downloads/"
source = os.listdir("/Users/plapl/Downloads/")

for files in source:
    if files.endswith(".exe"):
        shutil.rmtree(dir_name, files)

2 个答案:

答案 0 :(得分:2)

您只能删除带有shutil.rmtree的目录,而不能删除文件(请参阅https://docs.python.org/3/library/shutil.html#shutil.rmtree)。

您应该改用pathlibos

os.remove(f'{dir_name}/{files}')

pathlib.Path(f'{dir_name}/{files}').unlink()

答案 1 :(得分:2)

shutil.rmtree删除其第一个参数指定的整个目录shutil.rmtree的第二个参数是ignore_errors,告诉函数是否忽略发生的错误。它不是要删除的文件。

shutil.rmtree对于要完成的工作是完全不合适的工具。您需要类似os.remove的东西。