利用python找出两文件夹里相同的文件并保存在新的文件夹下(分三种情况)

原文件夹A,B,新文件夹C,下图中的情况以图片为例

A:00001.jpg  00002.jpg   00003.jpg  00147.jpg

B : 00001.jpg  000000002.jpg   00147.json

第一种情况:找出两文件夹下相同内容的文件,保存并输出到文件夹C

思路:判断内容是否一致,因此需要读取整个文件,判断两者是否一样

由于文件内容错综复杂,而其md5是唯一的,如果两者内容一致,则两者的md5值应该为一样。由于图片是二进制存储,在读取时采用‘rb’。这里是对文件内容进行md5值处理。每个文件名的类型是str格式。将A文件下的文件生成字典,判断B文件下的文件是否在A生成的字典中,如果存在,就将其存在新文件夹C下。

代码为:

第二种情况:如果A、B文件夹里的文件名一致,不care其内容是否一致,如果文件名一致就保存在新文件夹下。和情况一的区别在于这里是对文件名进行md5处理。

需要对filename进行编码,如果不加编码方式会报错。

第三种情况:B中的文件名和A文件夹下的文件名优关系,比如A文件jian夹下的000147.jpg,B文件夹下的000147.json,需要根据字符串提取的方式进行判断是否有内容一致

要根据实际情况做出相应的调整。

参考文章链接:https://zhidao.baidu.com/question/984682642027858179.html

原文地址:https://www.cnblogs.com/wclqiqi/p/9098073.html

时间: 2024-10-26 02:03:39

利用python找出两文件夹里相同的文件并保存在新的文件夹下(分三种情况)的相关文章

用javascript编写(找出两个数组中的差异元素并存入一个新的数组,假设每个数组内部都没有重复元素)。

onload = function(){                var a = [2,5,7,9];                var b = [3,4,5,7,8];                                //先准备一个函数,用来检查一个数组中是否包含某个数据,是就返回true,不包含就返回false                //再循环任意一个数组(这里就选a),把该数组中的每一个元素都去b数组中检查,没有就属于差异元素,就存入新的数组        

找出两个文本文件的不同的行

用shell找出两个文本文件的不同的行 亲自实验过的方法如下: 第一种:comm命令法 命令如下:comm -3 file1 file2 有一个问题就是,如果两个文件排序不一样的话,会出问题 第二种:grep命令法 命令如下:grep -vwf file1 file2 统计file1中没有,file2中有的行 具体使用环境以后再补充,今天先记录到这里. 参考文档: 1.找出两个文件内容的相同与不同:http://blog.csdn.net/shuckstark/article/details/7

找出两个数组的相同元素,最优算法?

在做新旧接口交替过程中,遇到了老接口和新接口json数据有些不一致的情况,需要比较两个json对象,把相同的元素赋其中一个json对象中变量的值.而且其中一个json最后输出格式还需要改变下属性名,思来想去觉得和"找出两个数组相同元素"很像,所以做下总结. "有一个数组A{0,2,3,5}和一个数组B{3,5,6,2,1,1},找出这两个数组相同元素." 一开始抽象出这道题时,脑海里浮现出最简单粗暴的方法,逐一比较. //最简单粗暴的做法,逐个比较,时间复杂度为(B

[算法学习]给定一个整型数组,找出两个整数为指定整数的和(3)

问题描述: 设计一个类,包含如下两个成员函数: Save(int input) 插入一个整数到一个整数集合里. Test(int target) 检查是否存在两个数和为输入值.如果存在着两个数,则返回true,否则返回false 允许整数集合中存在相同值的元素 分析: 与[算法学习]给定一个整型数组,找出两个整数为指定整数的和(2)不同,这里需要算出的是存不存在这两个数,可以在上一篇的基础上修改一下数据结构,HashMap其中key是数值,value是数值个数,然后需要作两步判断,map中存在数

高效的找出两个List中的不同元素

转自同名博文,未知真正出处,望作者见谅 如题:有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素? 方法1:遍历两个集合: package com.czp.test; import java.util.ArrayList; import java.util.List; public class TestList { public static void main(String[] args) { Lis

找出两个字符串中最长的相同子字符串

//找出两个字符串中最长的相同子字符串 public class Stringdemo { public static void main(String[] args) { String str1 = new String("eeabcde"); String str2 = new String("bcdefabcabcdedegg"); byte[] char1 = str1.getBytes(); byte[] char2 = str2.getBytes();

有两个变量a和b,不用“if”、“? :”、“switch”或其他判断语句,找出两个数中比较大的

1.问题 There are two int variables: a and b, don't use "if"."? :"."switch" or other judgement statement, find out the biggest one of the two numbers. (有两个变量a和b,不用"if"."? :"."switch"或其他判断语句,找出两个数中比较

找出两个数组相同的元素

题目:找出两个数组(有重)相同的元素,两种方法 public class 出两个数组相同的元素 { public static void main(String[] args) { // TODO Auto-generated method stub String[] test1 = {"damon","happy","ly","good","losers"}; String[] test2 = {&quo

利用动态规划找出最长公共单调递增子序列

1.设计一个O(n2)时间的算法. 方法如下: ①利用快速排序先将原序列排序. ②然后再计算原序列和已排序序列两者公共子序列. ③打印公共子序列. 代码如下: /************************************************************************/ /* 算法导论15.4-5 * 找出n个数的序列中最长的单调递增子序列 * 时间复杂度为O(n^2)*/ /*****************************************