Почему мой код удаляет все в папке? - PullRequest
0 голосов
/ 23 апреля 2020

Я написал код для обнаружения всех файлов .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 ]

2 голосов
/ 23 апреля 2020

shutil.rmtree удаляет весь каталог , указанный его первым аргументом. Второй аргумент shutil.rmtree - ignore_errors, сообщающий функции, следует ли игнорировать возникающие ошибки. Это не файл для удаления.

shutil.rmtree - совершенно неподходящий инструмент для работы, которую вы хотите сделать. Вам нужно что-то вроде os.remove.

2 голосов
/ 23 апреля 2020

Вы можете удалять каталоги только с shutil.rmtree, но не с файлами (см. https://docs.python.org/3/library/shutil.html#shutil .rmtree ).

Вместо них следует использовать pathlib или os.

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

pathlib.Path(f'{dir_name}/{files}').unlink()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...