python索引干什么
作者:大橡皮啊
最终效果:
删除重复文件,并保留创建日期更为久远的文件
上篇文章写了,利用群晖的存储空间分析器结合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文件夹是群晖全局索引文件.所以删除的文件要比实际的重复要多.因为索引也删除了.
侯杜眨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 ...