Python:重复删除空文件夹

时间:2016-01-20 12:37:22

标签: python

我在查找和删除我的python脚本中的空文件夹时遇到了麻烦..

我有一些文件更像是这样的文件:

A/
--B/
----a.txt
----b.pdf
--C/
----d.pdf

我要做的是删除所有不是pdf的文件,然后删除所有空文件夹。我可以删除我想要的文件但是我无法获取空目录..我做错了什么?

    os.chdir(path+"/"+name+"/Test Data/Checklists")
    pprint("Current path: "+ os.getcwd())
    for root, dirs, files in os.walk(path+"/"+name+"/Test Data/Checklists"):
            for name in files:
                    if not(name.endswith(".pdf")):
                            os.remove(os.path.join(root, name))
    pprint("Deletting empty folders..")
    pprint("Current path: "+ os.getcwd())
    for root, dirs, files in os.walk(path+"/"+name+"/Test Data/Checklists", topdown=False):
            if not dirs and not files:
                    os.rmdir(root)

4 个答案:

答案 0 :(得分:5)

使用insted函数

os.removedirs(path)

这将删除目录,直到父目录不为空。

答案 1 :(得分:1)

理想情况下,您应该在删除文件后立即删除目录,而不是使用os.walk进行两次传递

import sys
import os

for dir, subdirs, files in os.walk(sys.argv[1], topdown=False):
    for name in files:
        if not(name.endswith(".pdf")):
            os.remove(os.path.join(dir, name))
        if len(os.listdir(dir)) == 0: #check whether the directory is now empty after deletions, and if so, remove it
            os.rmdir(dir)

答案 2 :(得分:0)

要删除空白文件夹,您可以使用此代码段。 它可以与某些文件删除结合使用,但应按原样使用上一次运行。

import os


def drop_empty_folders(directory):
    """Verify that every empty folder removed in local storage."""

    for dirpath, dirnames, filenames in os.walk(directory, topdown=False):
        if not dirnames and not filenames:
            os.rmdir(dirpath)

答案 3 :(得分:0)

删除所有空文件夹

import os 
folders = './A/'  # directory
for folder in list(os.walk(folders)) :
    if not os.listdir(folder[0]):
        os.removedirs(folder[0])