ファイル名・ファイル内容を比べて、同じファイルを見つけ出す
こちら最初を作ったきっかけは、自分長い間でPCの中数万の画像データが収集してました、最初はPHPを学んだ時一度PHPで作りました、その後学校pythonを学び、もっと検索速度を上がらないがpythonで作り直しました。 数が多く、一回でフィルターができないを考え、前回フィルターした場所をメモをすれば、次には前回フィルターした場所を入力して続いてフィルターすることもできように改善しめました。
from Mydef import *
import os
from PIL import Image
#--モード選択------------
print("-------------------選択した数字を入力-----------------------")
print("-[1]フォルダの間で,もそファイル名が同じなら、ファイルのデータを比べる")
print("-[2]フォルダの間で,同じデータのファイルを見つけ出す---------------")
print("-[3]フォルダ内だけ,同じデータのファイルを見つけ出す---------------")
model = int(input())
#----------------------
print("サンプルフォルダのURL入力")
url_00 = input()
imglist_00={}
imglist_00 = filelist_x(url_00,imglist_00)
if model != 3 :
print("フィルターするフォルダのURL入力")
url_N = input()
imglist_N={}
imglist_N = filelist_x(url_N,imglist_N)
# print("同じデータの移動場所を入力")
backup = "H:\kari"
#对比同名 同内容文件
if model == 1 :
for imgname_00 in imglist_00 :
for imgname_N in imglist_N:
if imgname_00 == imgname_N :
img_00 = imglist_00[imgname_00]
img_N = imglist_N[imgname_N]
img_00 = Image.open(img_00)
img_N = Image.open(img_N)
if img_00 == img_N :
img_N.save(backup + "\\"+imgname_N)
os.remove(imglist_N[imgname_N])
#把每个文件打开 与目标文件夹中文件进行内容对比
elif model == 2 :
num = 0
for imgname_00 in imglist_00 :
if imgname_00.endswith("jpg") or \
imgname_00.endswith("jpeg") or \
imgname_00.endswith("png") or \
imgname_00.endswith("bmg") or \
imgname_00.endswith("gif") :
img_00 = imglist_00[imgname_00]
img_00 = Image.open(img_00)
for imgname_N in imglist_N:
if os.path.exists(imglist_N[imgname_N]) :
if imgname_N.endswith("jpg") or \
imgname_N.endswith("jpeg") or \
imgname_N.endswith("png") or \
imgname_N.endswith("bmg") or \
imgname_N.endswith("gif") :
img_N = imglist_N[imgname_N]
img_N = Image.open(img_N)
if img_00 == img_N :
img_N.save(backup + "\\"+imgname_N)
try:
os.remove(imglist_N[imgname_N])
except :
pass
print(str(num+1)+"/"+str(len(imglist_00)),end=",")
num = num+1
#同文件夹内 内容筛选 gif删除原文件有问题 暂不支持
elif model == 3 :
key = 0
img_num = {}
for imgname_00 in imglist_00 :
if imgname_00.endswith("jpg") or \
imgname_00.endswith("jpeg") or \
imgname_00.endswith("png") or \
imgname_00.endswith("gif") or \
imgname_00.endswith("bmg") :
img_num[key] = imgname_00
key = key+1
#样本起始位置---------------
try :
print ("途中からの場合位置を入力してください、入力しない場合は最初からになります")
begin = int(input())
img_num_begin = {}
for k in img_num :
if k >= begin :
img_num_begin[k] = img_num[k]
except :
img_num_begin =img_num.copy()
#--------------------------
for img_namekey in img_num_begin :
img_00 = imglist_00[img_num_begin[img_namekey]]
if os.path.exists(img_00) :
img_00 = Image.open(img_00)
for img_namekey_n in img_num :
if img_namekey_n > img_namekey :
img_N = imglist_00[img_num[img_namekey_n]]
if os.path.exists(img_N) :
img_N = Image.open(img_N)
try :
if img_00 == img_N :
img_N.save(backup + "\\"+img_num[img_namekey_n])
os.remove(imglist_00[img_num[img_namekey_n]])
except :
pass
print(str(img_namekey+1)+"/"+str(len(img_num)),end=",")