使用python删除文件夹的内容

时间:2015-02-19 14:15:58

标签: python shutil

我会定期删除Windows目录的内容,其中包含包含更多文件的文件和子目录。但是我没有一个我不想删除的特定文件(每次都是同一个文件)。我正在使用shutil.rmtree删除文件夹的内容,但我正在删除我希望保留的文件。如何防止删除我想保留的文件,shutil是最好的方法?

3 个答案:

答案 0 :(得分:2)

要获取目录中的路径名列表,请使用glob

假设您只想查找.gif个文件并删除它们:

import glob
gif_list = glob.glob('your/path/name/'+'*.gif')

对于您的路径,它会查找以.gif结尾的所有文件。您可以删除它们,复制它们,做任何你想做的事情。

或者,使用列表理解:

import glob
#just get a list of all the files/folders in your path:
path_list = glob.glob('your/path/name/'+'*')
gif_list = [x for x in file_list if x[-4:] == '.gif']

Glob当然也会找到所有文件夹。您可以过滤掉要保留的文件和/或文件夹,并使用rmtree删除其余文件和/或文件夹。例如,假设您要保留名为keep.me的文件:

import glob 
path_list = glob.glob('your/path/name/'+'*')
del_list = [x for x in path_list if x != 'your/path/name/'+'keep.me']

这样的事情应该有效。 试试吧!

答案 1 :(得分:0)

rmtree似乎没有任何可以使用的过滤机制;此外,由于其部分功能是删除目录本身,而不仅仅是其内容,因此没有意义。

如果您可以对文件执行某些操作以使rmtree尝试删除它失败,则可以让rmtree忽略此类错误,从而保留您的文件但删除其他文件。如果你不能,你可以求助os.walk循环遍历目录的内容,从而决定自己删除哪些项目。

答案 2 :(得分:0)

它只是一个文件还是一吨文件? 如果只是这一个文件,你可以直接点击 - 属性 - 安全和检查'拒绝'到处

http://www.technorms.com/27407/prevent-files-from-being-deleted-windows