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