首页 >>  正文

删除整个列表python

来源:baiyundou.net   日期:2024-09-21

作者:大橡皮啊

最终效果:

       删除重复文件,并保留创建日期更为久远的文件

      上篇文章写了,利用群晖的存储空间分析器结合python来查找重复文件.经人提醒,发现完全不需要用到存储分析器.因为那个文章编辑次数到限制了.无法编辑了.只能重新开贴.   有一点小小的设置.看下图

      file_type是一个文件类型的列表.在里面添加你想要删除的文件类型即可.每个文件类型之间用逗号隔开.

import os

import hashlib

# 只删除以下列表中的重复文件类型.如果想删除其他类型的文件,自己添加一下就行了

file_type = ['.jpg', '.jpeg', '.png', '.gif', '.psd', '.bmp', '.webp', '.mp4', '.mkv', '.avi', '.mov', 'mpeg', 'mpg',

             '.rar', '.zip']

check_files = []

def remove_reapt_files():

    for root, dirs, files in os.walk(r'/volume1/homes/xxxxxx/Drive/Moments/'):

        for name in files:

            # print(name)

            p_type = os.path.splitext(os.path.join(root, name))[1]

            if p_type in file_type:

                check_files.append(os.path.join(root, name))

        for name in dirs:

            p_type = os.path.splitext(os.path.join(root, name))[1]

            if p_type in file_type:

                check_files.append(os.path.join(root, name))

    files_dict = {}

    r_index = 0

    print('Fiels Num:%s' % len(check_files))

    for value in check_files:

        md5_hash = hashlib.md5()

        try:

            with open(value, "rb+") as f:

                for byte_block in iter(lambda: f.read(4096), b""):

                    md5_hash.update(byte_block)

                file_md5 = md5_hash.hexdigest()

                print('Check file MD5:%s' % value)

            if files_dict.get(file_md5) is None:

                files_dict[file_md5] = value

            else:

                d_path = files_dict[file_md5]

                d_path_stats = os.stat(d_path)

                file_stats = os.stat(value)

                d_time = d_path_stats.st_ctime

                f_time = file_stats.st_ctime

                if d_time > f_time:

                    os.remove(d_path)

                    files_dict[file_md5] = value

                    print('Delete File:', d_path)

                    r_index += 1

                else:

                    os.remove(value)

                    print('Delete File:', value)

                    r_index += 1

        except Exception as e:

            pass

            #print('File does not exist or has been deleted')

    print('File Count:%s, Repeat Files Num:%s. All deleted!' %( len(check_files),str(r_index)))

if __name__ == '__main__':

    remove_reapt_files()

文件下载之后,要添加到计划任务中.

先打开群晖上的File Station 新建一个文件夹.我这边取名叫 python_shell.然后把脚本文件复制到文件夹下.

然后打开计划任务,添加一个计划任务.执行频率.看个人喜好.运行命令就写python3 加上脚本的路径

这样就大功告成了.看看效果吧.

@eadir文件夹是群晖全局索引文件.所以删除的文件要比实际的重复要多.因为索引也删除了.

","force_purephv":"0","gnid":"95c9e7329dc8eeac5","img_data":[{"flag":2,"img":[{"desc":"","height":"174","title":"","url":"https://p0.ssl.img.360kuai.com/t01d8789567fc7d07d3.jpg","width":"600"},{"desc":"","height":"259","title":"","url":"https://p0.ssl.img.360kuai.com/t01bcbb7a603d379e77.jpg","width":"600"},{"desc":"","height":"532","title":"","url":"https://p0.ssl.img.360kuai.com/t01bbe930fc857d6289.jpg","width":"533"},{"desc":"","height":"189","title":"","url":"https://p0.ssl.img.360kuai.com/t01cf226c23320badd5.jpg","width":"600"},{"desc":"","height":"164","title":"","url":"https://p0.ssl.img.360kuai.com/t01f0316e95e5b219f3.jpg","width":"600"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1668674208000,"pure":"","rawurl":"http://zm.news.so.com/5b931f4f25d4540121746449657c5822","redirect":0,"rptid":"ff74231c4c8790e1","s":"t","src":"什么值得买","tag":[],"title":"利用python删除群晖中的重复文件(2)

毛查堂3851python编程中删除整个非空文件夹的代码如何写? -
贲兴舍15699995112 ______ import os 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))

毛查堂3851python怎么删除文件夹以及里面的所有文件 -
贲兴舍15699995112 ______ 可以调用os 模块 例如 import os os.remove()——删除指定文件 os.rmdir()——删除指定目录 os.system()-----执行系统命令 例如 os.system("rm test.txt") 注意,由于对文件进行操作, 请注意,执行python脚本的权限. 否则可能执行失败

毛查堂3851Python 中如何删除一个列表 List 中多个符合条件的元素 -
贲兴舍15699995112 ______ 基于文本文档(Markdown) 设想好需要的基本需要的表、字段、类型; 使用 Rails Migration 随着功能的开发逐步创建表; 随着细节功能的开发、需求,逐步增加字段,删除字段,或者调整字段类型; 第一个 Release 的时候清理 Migrations 合并成一个; 随着后期的改动,逐步增加、修改、删除字段或表. 基本上我的所有项目都是这么搞的,这和项目是否复杂无关. 所以我前面为什么说思路需要转变.

毛查堂3851如何删除一个list中最后一个元素 -
贲兴舍15699995112 ______ 1、python删除列表中指定元素的方法. 2、代码实例,创建一个列表. 3、打印定义的列表,使用print(). 4、删除列表中的指定元素,使用remove(). 5、再次打印删除元素后的列表. 6、列表的remove()方法其他注意事项.

毛查堂3851Python中怎么删除里面的元素,谢谢! -
贲兴舍15699995112 ______ # coding:utf-8def delNum(a): list = [] for i in a: if a.count(i) == 1: list.append(i) return listlist = [3,1,2,6,3,9,3]print(delNum(list))结果:[1, 2, 6, 9]进程已结束,退出代码0

毛查堂3851如何用python将列表中非字符串部分删掉 我有一个列表例如[“我”,“的”,0,“程序”],请 -
贲兴舍15699995112 ______ s=["我","的",0,"程序"] s=[value for value in s if type(value)==type("")]

毛查堂3851python代码:删除列表中相同的元素 -
贲兴舍15699995112 ______ lonelycat1984 没考虑其他情况,比如,无法hash的情况 try: set except NameError: from sets import Set as set #2.3以前 def unique(s): try: return list(set(s)) except TypeError: pass t = list(s) try: t.sort() except TypeError: del t else: return [x for i,x in ...

毛查堂3851python中列表和元组之间有什么区别? -
贲兴舍15699995112 ______ 除了元组是不可变的之外,还应有语义上的区别来指导它们的用法.元组是异构数据结构(即它们的条目具有不同的含义),而列表是同类序列.元组具有结构,列表具有顺序. 使用这种区别可以使代码更加明确和易于理解. 一个示例是成对...

毛查堂3851Python如何删除这个文件夹里的全部文件 -
贲兴舍15699995112 ______ 如果是连着文件夹一起删就是shutil.rmtree( src) 如果是只删除内容和子文件夹可以用os.walk 遍历文件夹,拿到文件和文件夹再删除,也可以连着文件夹一起删了再建一个

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024