如何在Python中删除本地文件夹的内容?
当前项目适用于Windows,但我也希望看到* nix。
#1楼
扩展mhawke的答案,这就是我已经实现的方法。 它会删除文件夹的所有内容,但不会删除文件夹本身。 在Linux上经过测试,带有文件,文件夹和符号链接,也应该在Windows上运行。
import os
import shutil
for root, dirs, files in os.walk('/path/to/folder'):
for f in files:
os.unlink(os.path.join(root, f))
for d in dirs:
shutil.rmtree(os.path.join(root, d))
#2楼
这个:
删除所有符号链接
无效链接
链接到目录
链接到文件
删除子目录
不删除父目录
码:
for filename in os.listdir(dirpath):
filepath = os.path.join(dirpath, filename)
try:
shutil.rmtree(filepath)
except OSError:
os.remove(filepath)
与许多其他答案一样,这不会尝试调整权限以启用文件/目录的删除。
#3楼
import os
import shutil
# Gather directory contents
contents = [os.path.join(target_dir, i) for i in os.listdir(target_dir)]
# Iterate and remove each item in the appropriate manner
[os.remove(i) if os.path.isfile(i) or os.path.islink(i) else shutil.rmtree(i) for i in contents]
较早的注释还提到在Python 3.5+中使用os.scandir。 例如:
import os
import shutil
with os.scandir(target_dir) as entries:
for entry in entries:
if entry.is_file() or entry.is_symlink():
os.remove(entry.path)
elif entry.is_dir():
shutil.rmtree(entry.path)
#4楼
我知道这是一个旧线程,但是我从python的官方站点发现了一些有趣的东西。 只是为了分享另一个想法,即删除目录中的所有内容。 因为在使用shutil.rmtree()时遇到一些授权问题,并且我不想删除目录并重新创建它。 原始地址为http://docs.python.org/2/library/os.html#os.walk 。 希望可以帮助到某人。
def emptydir(top):
if(top == '/' or top == "\\"): return
else:
for root, dirs, files in os.walk(top, topdown=False):
for name in files:
os.remove(os.path.join(root, name))
for name in dirs:
os.rmdir(os.path.join(root, name))
#5楼
我曾经通过这种方式解决问题:
import shutil
import os
shutil.rmtree(dirpath)
os.mkdir(dirpath)