一.首先导入模块
import difflib import os import os.path
二.设置txt文件
txt = '图片路径.txt' #将放置文件命名的txt设置
三.自主输入目标文件夹所在路径
def ReadPictureName(): #设置读取图片所在路径并询问是否打开函数
read = input('请输入图片文件路径:n')
if read != '': #对输入为空的表达
cho = input('是否选择打开文件夹?y/n:n')
if cho == 'y' or cho == 'Yes' or cho == 'Y':
try:
os.startfile(read) #使用os指令询问是否打开
except FileNotFoundError:
print('未找到该路径,无法打开文件')
start = read #对输入路径进行捕获并传导到下一函数
else:
start = read
try:
WritePictureName(start)
except FileNotFoundError: #对错误捕获
print('请重新输入路径')
ReadPictureName()
else:
print('请输入正确路径')
ReadPictureName()
四.对目标文件命名写入txt内
def WritePictureName(start): #对捕获路径内的图片命名写入txt内
Targetpath = start
stu_txt = open('图片路径.txt', 'w', encoding='utf-8') #w:打开一个文件只用于写入。并从开头开始编辑,即原有内容会被删除
hunter = os.listdir(Targetpath) #捕获文件命名
if hunter == []: #对文件内为空返回上一函数
print('该目录为空')
again = input('是否重新输入?y/n:n')
if again == 'y' or again == 'Yes' or again == 'Y':
ReadPictureName()
else:
return
else:
for i in range(len(hunter)): #使用遍历方式写入txt文件
s = hunter[i] + 'n'
stu_txt.write(s)
stu_txt.close()
五.对txt文件读取并进行对比
def Namecomparison(txt): #对txt文件内容进行读取
while True:
if os.path.exists(txt):
with open(txt, 'r', encoding='utf-8') as rf:
cc = rf.readlines()
a = cc
Way(a)
break
else:
print('已退出')
def Way(a): #对图片进行相似度对比
b = a
i = 0
j = 0
try:
d = float(input('请输入最低对比程度:(0-1,不包含1)n')) #对比程度进行设置
if d > 1:
print('超出范围,重新输入')
Way(a)
except:
print('输入错误')
Way(a)
while (i < len(a)):
while (j < len(a)):
c = difflib.SequenceMatcher(None, a[i], b[j]).quick_ratio() #对比字符相似度
if d < c < 1:
x = (a[i], b[j])
print(x)
j += 1
else:
j += 1
if j == len(a):
j = i + 2
i += 1
elif j == len(a) and i == len(a):
break
六.主函数运行
if __name__ == '__main__': #主函数设置
ReadPictureName() #首先运行函数
Namecomparison(txt)
while True: #对函数是否继续运行
again = input('是否再次输入图片文件路径y/n:n')
if again == 'y' or again == 'Yes' or again == 'Y':
ReadPictureName()
Namecomparison(txt)
continue
else:
print('结束程序')
exit()
七.完整代码
import difflib
import os
import os.path
txt = '图片路径.txt' #将放置文件命名的txt设置
def ReadPictureName(): #设置读取图片所在路径并询问是否打开函数
read = input('请输入图片文件路径:n')
if read != '': #对输入为空的表达
cho = input('是否选择打开文件夹?y/n:n')
if cho == 'y' or cho == 'Yes' or cho == 'Y':
try:
os.startfile(read) #使用os指令询问是否打开
except FileNotFoundError:
print('未找到该路径,无法打开文件')
start = read #对输入路径进行捕获并传导到下一函数
else:
start = read
try:
WritePictureName(start)
except FileNotFoundError: #对错误捕获
print('请重新输入路径')
ReadPictureName()
else:
print('请输入正确路径')
ReadPictureName()
def WritePictureName(start): #对捕获路径内的图片命名写入txt内
Targetpath = start
stu_txt = open('图片路径.txt', 'w', encoding='utf-8') #w:打开一个文件只用于写入。并从开头开始编辑,即原有内容会被删除
hunter = os.listdir(Targetpath) #捕获文件命名
if hunter == []: #对文件内为空返回上一函数
print('该目录为空')
again = input('是否重新输入?y/n:n')
if again == 'y' or again == 'Yes' or again == 'Y':
ReadPictureName()
else:
return
else:
for i in range(len(hunter)): #使用遍历方式写入txt文件
s = hunter[i] + 'n'
stu_txt.write(s)
stu_txt.close()
def Namecomparison(txt): #对txt文件内容进行读取
while True:
if os.path.exists(txt):
with open(txt, 'r', encoding='utf-8') as rf:
cc = rf.readlines()
a = cc
Way(a)
break
else:
print('已退出')
def Way(a): #对图片进行相似度对比
b = a
i = 0
j = 0
try:
d = float(input('请输入最低对比程度:(0-1,不包含1)n')) #对比程度进行设置
if d > 1:
print('超出范围,重新输入')
Way(a)
except:
print('输入错误')
Way(a)
while (i < len(a)):
while (j < len(a)):
c = difflib.SequenceMatcher(None, a[i], b[j]).quick_ratio() #对比字符相似度
if d < c < 1:
x = (a[i], b[j])
print(x)
j += 1
else:
j += 1
if j == len(a):
j = i + 2
i += 1
elif j == len(a) and i == len(a):
break
八.运行结果
1.目标文件
2.运行结果



