Python удаление нескольких файлов с использованием карты и os.remove - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь удалить несколько файлов, используя этот метод:


map(os.remove, glob.glob("*.pdf"))

Я получаю список файлов с расширением pdf, но это не удаляет файлы.

Мое решение было обернуть эту карту list().

Любое другое решение, которое не требует использования списка или что-то?

1 Ответ

2 голосов
/ 10 марта 2020

Используйте for l oop:

for i in glob.glob('*.pdf'):
    os.remove(i)

Причина, по которой map(...) не работает сама по себе, заключается в том, что map(...) вернет генератор и будет вычислять только выражения как только к элементам фактически получен доступ из генератора.

Кроме того, смысл map(...) состоит в том, чтобы сгруппировать результаты выражений, возвращаемых функцией, которая вызывается для каждого элемента, но на самом деле это не смысл здесь, поскольку os.remove(...) на самом деле ничего не возвращает (или, другими словами, возвращает None), поэтому сборка списка None s на самом деле не имеет большого значения (вы выбрасываете это правильно в любом случае), использование for l oop является более подходящим способом решения этой задачи.

...