如何在Python中删除本地文件夹的内容?
目前的项目是Windows,但我也想看到*nix。
如何在Python中删除本地文件夹的内容?
目前的项目是Windows,但我也想看到*nix。
当前回答
你可以使用shutil.rmtree删除文件夹本身,以及它的所有内容:
import shutil
shutil.rmtree('/path/to/folder')
shutil。rmtree(path, ignore_errors=False, onerror=None) 删除整个目录树;Path必须指向目录(但不是指向目录的符号链接)。如果ignore_errors为true,移除失败导致的错误将被忽略;如果为false或省略,则通过调用onerror指定的处理程序来处理此类错误,如果省略,则会引发异常。
其他回答
我通过添加time.sleep()来解决rmtree makedirs的问题:
if os.path.isdir(folder_location):
shutil.rmtree(folder_location)
time.sleep(.5)
os.makedirs(folder_location, 0o777)
回答一个有限的、具体的情况: 假设你想在维护子文件夹树的同时删除文件,你可以使用递归算法:
import os
def recursively_remove_files(f):
if os.path.isfile(f):
os.unlink(f)
elif os.path.isdir(f):
for fi in os.listdir(f):
recursively_remove_files(os.path.join(f, fi))
recursively_remove_files(my_directory)
也许有点跑题,但我想很多人会觉得它很有用
这样的:
删除所有符号链接 死链接 指向目录的链接 文件链接 删除子目录 不移除父目录
代码:
for filename in os.listdir(dirpath):
filepath = os.path.join(dirpath, filename)
try:
shutil.rmtree(filepath)
except OSError:
os.remove(filepath)
与许多其他答案一样,这不会尝试调整权限以允许删除文件/目录。
删除文件夹a中的所有文件:
import os
for i in os.listdir():
os.remove(i)
使用下面的方法删除目录的内容,而不是目录本身:
import os
import shutil
def remove_contents(path):
for c in os.listdir(path):
full_path = os.path.join(path, c)
if os.path.isfile(full_path):
os.remove(full_path)
else:
shutil.rmtree(full_path)