筛图——找到丢失的那张(些)图/删除重复图片

筛图的时候可能会出现误操作情况,比如:

  1. 移动图片位置错误(可能增加/减少图片数量)
  2. 按住shift删除图片(永久删除不进入回收站)

丢失图片

R&D给的图片格式有 *jpg *jpeg *png *bmp

获取文件名(两种方法)

  1. 在目录文件 打开notepad输入下列文字
tree /f >text_dir.txt
  1. 代码提取
  • listdir 提取 该目录下 所有文件
# -*- coding: utf-8 -*-

import os

def list_text(file,dir):
    dirs = os.listdir(dir)
    for filename in dirs:
        file.write(filename + "\n")

def text():
	#输出到的目录
    outfile = r'C:\Users\Desktop\list_dir.txt' 
    file = open(outfile,'w')
    if not file:
        print('%s cannot open  ' % outfile)
    list_text(file,dir)
    file.close()

if __name__ == '__main__':
	#更改 图片所在目录 的地址
	dir = r'D:\0数据任务'
    text()
    
  • listdir 提取 该目录下 指定格式文件

参考文章

# -*- coding: utf-8 -*-
import os

def get_file(root_path,suffix): 
    for dir_name in os.listdir(root_path):
        exts = suffix.split(' ')
        #获取目录或文件的路径
        file_path = os.path.join(root_path,dir_name)
        #判断路径为文件还是路径
        if os.path.isdir(file_path):
            #递归获取所有文件和目录的路径
            get_file(file_path,suffix)        
        else:
            for ext in exts:                
                #根据后缀名判断文件类别
                if(dir_name.endswith(ext)): 
                    file.write(dir_name + '\n')

if __name__ == "__main__":
    root_path = r'D:\0数据任务'
    suffix = '.jpg .jpeg'
    outfile = r"C:\Users\Desktop\list_dir.txt"
    file = open(outfile,'w')
    get_file(root_path,suffix)
    file.close()
  • walk 提取 该目录下 指定格式文件
    这里用到的是os.walk()
    函数声明:walk(top,topdown=True,onerror=None)

  • 补充:os.path.walk(top, func, arg)
    top:表示需要遍历的目录树的路径
    func:表示回调函数,对遍历路径进行处理的函数。所谓回调函数,是作为某个函数的的参数使用,当某个时间触发时,程序将调用定义好的回调函数处理某个任务。该回调函数必须提供3个参数:第1个参数为walk()的参数arg,第2个参数表示目录列表dirname,第3个参数表示文件列表names。
    arg:是传递给回调函数func的元组,为回调函数提供处理参数,回调函数的第一个参数就是用来接收这个传入的元组的,参数arg可以为空)
    参考

import os

def get_file(root_path,suffix):
	#下面这三行也可以不写
    dir_list = os.listdir(root_path)
    for dir_name in dir_list:
        dir_path = os.path.join(root_path,dir_name)
        
        for root,dirs,files in os.walk(dir_path):
            for name in files:
                exts = suffix.split(' ')
                for ext in exts:                
                    #根据后缀名判断文件类别
                    if(name.endswith(ext)): 
                        file.write(name + '\n')
                        break

if __name__ == "__main__":
    root_path = r'D:\0数据任务'
    suffix = '.jpg .jpeg'
    outfile = r"C:\Users\Desktop\list_dir.txt"
    file = open(outfile,'w')
    get_file(root_path,suffix)
    file.close()

Excel也可以批量提取文件名
https://baijiahao.baidu.com/s?id=1621825565528118740&wfr=spider&for=pc

筛选时尽量使WPS,Office里的Excel可能会有卡顿

分别提取 base数据文件夹 和 done数据文件 文件目录

将两个 .txt 文件 里面的内容复制到 Excel表

条件格式——突出显示单元格规则——重复
筛选——颜色筛选——空

筛选图片

重复图片

举例keep-other聚合 (每个品类图片数量较大,比如:白酒、红酒,需要两个人协同完成,因为公用一个keep集合,会出现重复情况)

获取文件名(两种方法)

提取 done数据文件夹 文件目录

.txt 文件 里面的内容复制到 Excel表

条件格式——突出显示单元格规则——重复
筛选——颜色筛选——空

筛选图片

反思

当你多次调用 os.path.join() 时,这种方式操作文件系统就会变得很笨重。

	for file in os.listdir(dir):
		print(file)

如果你还想获取文件和目录属性(如文件大小和修改日期),那么 os.scandir() 则是首选的方法。

    with os.scandir(dir) as files:
        for file in files:
            if file.is_file:
                print(file.name)
发布了36 篇原创文章 · 获赞 3 · 访问量 1761

猜你喜欢

转载自blog.csdn.net/qq_38689395/article/details/100173544