Python - как удалить содержимое в сложной папке, не меняя ее структуру? - PullRequest
2 голосов
/ 08 февраля 2012

У меня есть папка с подпапками, каждая из которых может содержать больше подпапок и так далее. Я хочу удалить все файлы во всех них, но сохраняя структуру каталогов. Есть ли встроенная команда или мне нужно написать какую-нибудь рекурсивную функцию для этого, используя os.listdir?

Ответы [ 3 ]

3 голосов
/ 08 февраля 2012

Бесстыдно украдено из документации Python на Файлы и каталоги с удалением каталогов:

# Delete everything reachable from the directory named in "top",
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
1 голос
/ 08 февраля 2012
import os

#check if file is hidden 
def is_hidden(filepath):
    name = os.path.basename(os.path.abspath(filepath))
    return name.startswith('.')

top = '/dir'
for root, dirs, files in os.walk(top):
    for name in files:
       #do not delete hidden files (as asked by OP in comments)
       if is_hidden(name) == false:  
          os.remove(os.path.join(root, name))
1 голос
/ 08 февраля 2012

См. os.walk:

import os
top = '/some/dir'
for root, dirs, files in os.walk(top):
    for name in files:
        os.remove(os.path.join(root, name))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...