首页 >>  正文

python索引干什么

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

作者:大橡皮啊

最终效果:

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

      上篇文章写了,利用群晖的存储空间分析器结合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)

侯杜眨5227如何获取Python中list的子集 -
萧诞重17547091319 ______ Python的索引从0开始,还有反向索引.索引指定为-1就是最后一项.list的切割:指定一个范围 [起点:终点] 起点包含,终点不包含 还可以不指定冒号前后的数值,如果不指定前的数值默认从0开始,如果不指定冒号后的数值默认到list结束.

侯杜眨5227为什么Python的索引从零开始 -
萧诞重17547091319 ______ 可能是因为python是用c语言编写的缘故 c语言就是从0开始的 不过这个是开发者定的了

侯杜眨5227计算机索引为什么从0开始 -
萧诞重17547091319 ______ python的创始人(Guido van Rossum)说过,Python使用0-based索引方式的原因之一是Python的切片(slice)语法. 先看看切片的用法.可能最常见的用法就是“从数组中切出前n位”或“从数值这第i位起切出n位”(前一种实际上是i==起...

侯杜眨5227谁能描述一下数据库中索引的作用? -
萧诞重17547091319 ______ 索引的意义 ·索引在数据库中的作用相当于目录在书籍中的作用类似,都用来提高查找信息的速度. 索引是一个表中所包含值的列表,其中注明了表中包含各个值的行所在的存储位置,使用索引查找数据时,先从索引对象中获得相关列的存储位置.然后再直接去其存储位置查找所需信息,这样就无需对这个表进行扫描,从而可以快速的找到所需数据.

侯杜眨5227数据库中的"索引"用来做什么用啊~ -
萧诞重17547091319 ______ 主要是用来降低CPU成本消耗的!我们平时写的查找语句如:select *from Table 查找的数据如果少的话,我们就感觉不到查找所用的时间,对CPU的消耗也无法体会!如果查找上万条数据的话,你就能感觉到会有多慢,多卡!不信的话你写一个while循环试试,插上5万多数据,在查一下.呵呵~ 索引就是专门用来解决这些问题的,就向楼上那位老兄所说的!

侯杜眨5227编程语言python是用来干什么的? -
萧诞重17547091319 ______ python的作用: 1、系统编程:提供API(ApplicationProgramming Interface应用程序编程接口),能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具. 2、图形处理:有PIL、Tkinter等图形库支持,能方便进...

侯杜眨5227python中的列表中常用的方法有哪些,分别是什么作用? -
萧诞重17547091319 ______ Python列表定义:按特定顺序排列的元素组成.在Python中,用方括号[]来表示列表,并用逗号来分隔其中的元素.Python列表是编程中很常见的数据类型 . 列表是一种可修改的集合类型,其元素可以是数字、string等基本类型,也可以是列表...

侯杜眨5227索引是什么,创建索引是用来干什么的? -
萧诞重17547091319 ______ 使用索引能够提高数据查询的性能,这是很明显的.在Visual FoxPro中,索引是树形的数据结构,所以在索引中查询非常快.Visual FoxPro最独特的方面之一就是支持在索引中使用公式.大多数数据库管理系统(DBMSs)允许使用一个或更多...

侯杜眨5227python遍历一个列表 前面有个索引 -
萧诞重17547091319 ______ >>> x = [chr(i) for i in range(97, 97 + 26)] >>> x ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] >>> for i, v in enumerate(x): print("{} {}".format(i, v)) 0 a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10 k 11 l 12 m 13 n 14 o 15 ...

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