Ниже код удалит папки, начиная с date1. Но я хочу удалить все, кроме date1.So Пожалуйста, помогите. Спасибо - PullRequest
0 голосов
/ 23 апреля 2020

files = [i for i в os.listdir (sr c) if (i.startswith (date1) и path.isdir (path.join (sr c, i)))]

для f в файлах: shutil.rmtree (path.join (sr c, f))

где, src = исходный путь date1 = конкретный c шаблон

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Вы можете сделать это так. Я пояснил код, чтобы объяснить это.

dirs = []

# look into your root folder
for item in os.listdir(src):
    # check if item is a directory and matches the pattern
    if(path.isdir(path.join(src, item)) and item.startswith(date1)):
        # remember it
        dirs.append(path.join(src, item))

# go over all remembered directories
for drctry in dirs:
    # look in all sub-directories
    for d, sd, files in os.walk(drctry):
        # go over all files in the directories
        for file in files:
            # check if file still exists to prevent errors
            if(path.isfile(path.join(d, file))):
                # delete it
                os.remove(path.join(d, file))

# go over all remembered directories
for drctry in dirs:
    # delete the tree
    shutil.rmtree(path.join(drctry))

У меня была такая структура теста:

  • root папка
    • 2020-04-13
    • 2020-05-22
      • один
        • tst.txt
      • два
        • один
          • testt.rtf
        • test.txt

С моим тестом Я удалил 2020-05-22 со всем его содержимым.

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

Не могли бы вы рассказать немного подробнее о том, что вы пытаетесь сделать, пожалуйста? Является ли «date1» родительской папкой, с которой вы хотите начать удаление, или это также дочерняя папка, которую вы хотите «освободить» от удаления? Или я здесь совсем? :) Может быть, вы можете показать пример структуры?

...