Используйте pathlib для деструктивного переименования одного каталога в другой существующий каталог - PullRequest
0 голосов
/ 15 мая 2018

У меня есть структура каталогов, которая может выглядеть примерно так:

Data
    Current
        A
        B
        C
    Previous
        A
        X

В самом простом / быстром шаге, насколько это возможно, я хочу переименовать Current в Previous, включая содержимое и стирая оригинал так, чтобы он был теперь:

 Data
    Previous
        A
        B
        C

Я пробовал что-то вроде:

from pathlib import Path
src = Path('Data/Current')
dest = Path('Data/Previous')
src.replace(dest)

Документы заставили меня надеяться, что это сработает:

Если цель указывает на существующий файл или каталог, это будет безоговорочно заменено.

Но это действительно представляется условным. Я получаю исключение Directory not empty. Я думаю, что я мог бы рекурсивно удалить каталог Previous в первую очередь. Это единственное решение? Или есть лучший способ добиться этого?

(я предпочитаю pathlib, но если os или shutil здесь лучший молоток, я не против них)

(я работаю в Linux)

1 Ответ

0 голосов
/ 15 мая 2018

Продолжая комментарий Sehafoc, после удаления всего дерева файлов для dest («Данные / Предыдущий»), используя shutil следующим образом:

shutil.rmtree(dest)

Переименовать src («Данные / Текущий»") до dest.

src.rename(dest)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...