首页 >>  正文

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)

窦实嘉921python 删除特定几行 -
武何盼18255323559 ______ 思路:先读入一个文件,自动保存为列表类型,每行为一个元素 然后删除列表中索引为 0,1,2 的三个元素 以下代码调试通过:f = open("/Users/mfhj-dz-001-119/Downloads/text001.txt") lines = f.readlines() print('\noriginal lines is:', lines) del lines[0:2] print('\nnow the lines is:', lines) 读入的文件:运行效果:

窦实嘉921python:如何将一个list的第2,5,6,7,8项同时删去? -
武何盼18255323559 ______ p.sort(reverse=True) for i in p: del mylist[i] 这样是删掉index是2,5,6,7,8的,如果你要第2,5,6,7,8项的话,应该是del mylist[i-1]

窦实嘉921Python里怎么编程可以让用户能“删除数据文件中的数据” -
武何盼18255323559 ______ 你把你的类里面除了姓名,年龄,年龄等字段以外再增加一个字段用来表示这条记录是否删除,比如叫做IsValid.正常的数据这个字段设置为1,需要删除的时候就直接把这个字段设置为0就好.到这样就已经可以实现需要的功能了,缺点就是删除了的数据还在占用文件空间,要做得好一点的话,那么再添加数据的时候,可以看看前面是否有IsValid设置为0的条目,有的话直接覆盖这个条目否则追加到文件末尾,这样来达到文件空间重复利用的目的.

窦实嘉921python把列表前几个元素提取到新列表 -
武何盼18255323559 ______ python把列表前几个元素提取到新列表步骤如下: 1、打开python语言命令窗口,定义一个列表变量C并进行赋值. 2、利用获取列表中的序号,获取对应的元素,然后将这些元素拼接成一个新的列表. 3、还可以定义一个空列表,然后使用for...in语句循环生成元素,装载到空列表中. 4、除了上述两种方法之外,还可以使用切片截取的功能. 5、切片的序号除了可以是两个之外,还可以是一个,缺了第一个留下第二个. 6、除了这之外,还可以是一个负数,表示从后到前进行截取.

窦实嘉921python out of range怎么解决 -
武何盼18255323559 ______ del 删除一个列表元素列表长度就会变短,而你的FOR是根据L3的长度执行的.就会有个问题L1删除一个元素后只剩下两个元素的长度,当循环执行到i=2时就会报错,因为L1现在是[3] 只有一个元素,del L1[2] 就会超出列表 其实可以用以下方法循环: while True: if len(L1)==0:break; del L1[0]

窦实嘉921Python如何删除字符串的最后3个字符 -
武何盼18255323559 ______ 1、首先在jupyter notebook中新建一个空白的python文件: 2、然后定义一个字符串,用字符串截取的方式打印出排除最后三个字符的结果,这里的“s[:-3]”的意思就是从字符串取第0个字符至倒数第三个字符的前一个字符,这样就截取了最后三个字符,它们就不会出现了: 3、最后按下crtl+回车键即可看到结果.以上就是Python删除字符串的最后3个字符的方法:

窦实嘉921python中的strip和split结合起来怎么用 -
武何盼18255323559 ______ python strip() 函数和 split() 函数的详解及实例 一直以来都分不清楚strip和split的功能,实际上strip是删除的意思;而split则是分割的意思.因此也表示了这两个功能是完全不一样的,strip可以删除字符串的某些字符,而split则是根据规定的...

窦实嘉921Python中[:: - 1]这个代码是什么意思? -
武何盼18255323559 ______ 个人理解是最后一项向后步进时用到的,::1是向后步进1时用到的.删除和插入列表时候,把k位置元素删除并把列表k位置向后步进一位接受数据返回列表原位置,列表长度减一.::-1其实是同理,把元素插入k位置需要将k位置本来的元素向...

窦实嘉921python把列表前几个元素提取到新列表 -
武何盼18255323559 ______ 1、首先说先如何创建一个新列表,直接使用list=[2,3,4],即创建了一个名为list的列表. 2、如何查看list中的值的数量,这里使用len方法查看,len(list)则为list的值的数量. 3、使用append方法可以向list中添加前几个元素,list.append(value),示例如下图. 4、在列表使用中,经常需要遍历列表查看它的元素,需要使用for循环来完成,如下图所示 5、同时如果需要删除列表中的某一个元素,则使用del list[0]删除第1个元素.

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