Как эта пакетная команда FOR переводится на Python? - PullRequest
0 голосов
/ 02 мая 2019

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

for /d /r %%u in (*) do rmdir "%%u"

У меня есть моя гротескная версия, которую я пытаюсь исправить, что должно быть всякого рода неправильным.Я бы предпочел использовать модуль shutil, если подходит.

for dirpath in os.walk("D:\\SOURCE")
    os.rmdir(dirpath)

1 Ответ

2 голосов
/ 02 мая 2019

Если вы хотите удалить только пустые каталоги, то pathlib.Path (..). Glob (..) будет работать:

import os
from pathlib import Path
emptydirs = [d for d in Path('.').glob('**/*')          # go through everything under '.'
             if d.is_dir() and not os.listdir(str(d))]  # include only directories without contents
for empty in emptydirs:    # iterate over all found empty directories
    os.rmdir(empty)        # .. and remove

, если вы хотите удалитьвсе, что находится в каталоге, тогда функция shutil.rmtree(..) может сделать это в одной строке:

import shutil
shutil.rmtree('.')

проверить документы для всех деталей (https://docs.python.org/2/library/shutil.html#shutil.rmtree)

...