python 自动比对目录,并覆盖更新.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 自动比对目录,并覆盖更新.相关的知识,希望对你有一定的参考价值。

例:
D盘下面有abc文件夹名
z盘(网络盘)下面也有abc文件夹名
比对Z盘的和D,并把不同的地方.Z盘的覆盖更新到D盘.
注:abc文件夹里面还有子文件夹如果不同,要一起更新.

以前做过一个。不过后来有了fastcopy后,就基本上不用那个工具了。fastcopy可以做文件差异比较复制,而且速度很快。

制作这个程序的思路要用两个函数
os.listdir,做一个[]作为目录的队列(堆栈会速度慢,用队列好些)用来访问子目录
第二个就是os.path里,有一个info获取文件属性的,里面有mdate,cdate等。也可以直接使用函数os.path.getfilesize获得文件属性
os.path.isfile()用来检查文件是否存在 os.path.fileexists好象也成。
参考技术A 其实你可以这样想。思路就对了
你只需要写入遍历程序,将Z盘所有文件的最后更新时间记录下来,存放在库或者文件中。。
当你的程序发现文件更新时间比你记录的时间新时,或者文件不存在于你的记录表中,则直接覆盖D盘下的文件。。这个容易写。。你自己研究下。
参考技术B 遍历,对比,更新 参考技术C 用版本控制工具吧,我用的是git,有GUI界面的哦。搜索一下git。

python opencv图像缺陷比对(轮廓比对)

机器视觉缺陷检测实验

一、实验目的

1)利用python编写程序实现对图像的缺陷检测;

2)通过轮廓对比检测出合格产品与不合格产品;

3)实现在图像上显示文本提示信息;

二、题目描述

1)读取标准图像并显示;

2)利用for循环读取待测的对比图像;

3)将标准图像与一张待测图像进行中值滤波、图像差分、灰度化处理、轮廓提取、最后提取轮廓总数;

4)将合格产品的轮廓数进行提炼,采用if语句利用轮廓数判断待测图像是否合格;

5)在合格图像上显示“合格”字样的提示信息,不合格则在相应图像上显示“不合格”。

三、实现过程及运行效果

实验标准图像如下:

3.1标准图像

实验步骤:

1)读取标准图像并利用for循环读取待测的对比图像;

2)将标准图像与一张待测图像进行中值滤波、图像差分、灰度化处理、轮廓提取、最后提取轮廓总数;

代码实例:

import cv2

import numpy as np

from PIL import Image, ImageDraw, ImageFont

minThres = 6

# 读取图像1

img=cv2.imread(\'0.bmp\')#读取标准图像 

cv2.imshow(\'YuanTu\',img)

cv2.waitKey(0)

cv2.destroyAllWindows()

for i in range(1,6):

imgi=cv2.imread(\'{}.bmp\'.format(i))#依次读取待测图像

#中值滤波

img1 = cv2.medianBlur(img,15)

# 图像差分

diff = cv2.absdiff(img1, imgi)

#灰度图

gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)

# 二值化

_,thres = cv2.threshold(gray,minThres,255,cv2.THRESH_BINARY)

# 查找轮廓

contours,hierarchy = cv2.findContours(thres, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

3)将合格产品的轮廓数进行提炼,采用if语句利用轮廓数判断待测图像是否合格;

代码实例:

if len(contours)>1000:

print(\'合格\')

else:

Print(‘不合格’)

4)在合格图像上显示“合格”字样的提示信息,不合格则在相应图像上显示“不合格”。

代码实例:

if len(contours)>1000:

print(\'合格\')

#在图像上显示是否合格

src1 = Image.fromarray(cv2.cvtColor(imgi, cv2.COLOR_BGR2RGB))

font = ImageFont.truetype(\'simsun.ttc\', 30)

# 文字输出位置

position = (5,5)

# 输出内容

str = \'合格\'

draw = ImageDraw.Draw(src1)

draw.text(position, str, font=font, fill=(255, 0, 0))

src1 = cv2.cvtColor(np.asarray(src1), cv2.COLOR_RGB2BGR)

cv2.imshow("CeShi",src1)

cv2.waitKey(0)

else:

print(\'不合格\')

#在图像上显示是否合格

src2 = Image.fromarray(cv2.cvtColor(imgi, cv2.COLOR_BGR2RGB))

font = ImageFont.truetype(\'simsun.ttc\', 30)

# 文字输出位置

position = (5,5)

# 输出内容

str = \'不合格\'

draw = ImageDraw.Draw(src2)

draw.text(position, str, font=font, fill=(255, 0, 0))

src2 = cv2.cvtColor(np.asarray(src2), cv2.COLOR_RGB2BGR)

cv2.imshow("CeShi",src2)

cv2.waitKey(0)

 

3.4.1检测结果图

3.4.2检测结果图

 

3.4.3检测结果图

 

四、问题及解决方法

1)刚开始自己想的是将两张灰度图利用equals()函数进行比对看能否通过,结果不难想象确实太天真,这错误很低级了,数据类型都没分清楚的;

2)在网上查找资料一直找不到怎么直接对两张图像进行缺陷检测比对,只有一个差分检测;

3)有找到一个关于差异检测的相关资料可是发现其中一个SIF算法被申请了专利不能使用;

4)最后通过仔细研读了一个博主的代码,几次运行测试发现了轮廓数可以作为判断依据来实现我的目的,所以大胆采用了这一方法,成功实现了本次实验。

五、实验总结

本次实验让我感觉机器视觉实验越来越上升了难度,同时发现老师的高科技实验软件太厉害了,简单方便,科技的力量。本次实验花费了我足足一天的时间才勉强完成任务,之后应该还有一次更加困难的挑战,没有撤退可言唯有迎难而上。

 

以上是关于python 自动比对目录,并覆盖更新.的主要内容,如果未能解决你的问题,请参考以下文章

Node 101214 版本的更新比对

Node 101214 版本的更新比对

JAVA自动更新下载的新安装程序在哪个目录里?

centos 中如何将python更新到最新的版本

python 通过在包的根目录中的某个位置自动更新sublime文本包

delphi 自动更新cs客户端的问题