我在查找和删除我的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)
答案 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])