我想检查文件名是否在同一文件夹上重复。如果我说明我的情况会更好
eyeclosed/
├── glasses3_face_righteyeclahe_closed.jpg
├── good1_face_lefteyeclahe_closed.jpg
├── good1_face_righteyeclahe_closed.jpg
├── sun3_face_righteyeclahe_closed.jpg
├── sun4_face_lefteyeclahe_closed.jpg
├── sun4_face_righteyeclahe_closed.jpg
├── sun5_face_lefteyeclahe_closed.jpg
这是对图像上双眼(左眼和右眼)的指示。而且我想知道两只眼睛是否都闭合了,这意味着,如果两个图像名称重复它们,那么双眼就会被关闭(例如:sun4) 让我们简化:
import os
for file in os.listdir("eyeclosed"):
if file.endswith(".jpg"):
newstr = file.replace("_face_lefteyeclahe_closed", "")
newstr = newstr.replace("_face_righteyeclahe_closed", "")
print(newstr)
给我们:
glasses3.jpg
good1.jpg
good1.jpg
sun3.jpg
sun4.jpg
sun4.jpg
sun5.jpg
sun5.jpg
好的,现在我的目标是知道哪些名称重复,如果是,请将其保存为txt文件。例如,sun4重复自身,这意味着双眼都被关闭,因此保存为txt文件
sun4.jpg both eyes closed
有人知道如何检查文件是否重复?谢谢
答案 0 :(得分:1)
因为您只需要检查重复的(短)名称,然后您可以使用列表记住以前的名称并检查此列表中是否存在下一个名称。
listdir = [
'glasses3_face_righteyeclahe_closed.jpg',
'good1_face_lefteyeclahe_closed.jpg',
'good1_face_righteyeclahe_closed.jpg',
'sun3_face_righteyeclahe_closed.jpg',
'sun4_face_lefteyeclahe_closed.jpg',
'sun4_face_righteyeclahe_closed.jpg',
'sun5_face_lefteyeclahe_closed.jpg',
]
names = [] # list to remember previous names
for file in listdir:
if file.endswith(".jpg"):
newstr = file.replace("_face_lefteyeclahe_closed", "")
newstr = newstr.replace("_face_righteyeclahe_closed", "")
# check if new name is already on list
if newstr in names:
print(newstr, "both eyes closed")
else:
# add new name to list first time
names.append(newstr)
BTW:如果您需要重复此名称的次数,则可以使用字典对其进行计数或collections.Counter()
。
listdir = [
'glasses3_face_righteyeclahe_closed.jpg',
'good1_face_lefteyeclahe_closed.jpg',
'good1_face_righteyeclahe_closed.jpg',
'sun3_face_righteyeclahe_closed.jpg',
'sun4_face_lefteyeclahe_closed.jpg',
'sun4_face_righteyeclahe_closed.jpg',
'sun5_face_lefteyeclahe_closed.jpg',
]
import collections
names = collections.Counter()
for file in listdir:
if file.endswith(".jpg"):
newstr = file.replace("_face_lefteyeclahe_closed", "")
newstr = newstr.replace("_face_righteyeclahe_closed", "")
names.update([newstr])
for name, count in names.items():
if count > 1:
print(name, "both eyes closed")
答案 1 :(得分:1)
import os
MyList=[]
for file in os.listdir("eyeclosed"):
if file.endswith(".jpg"):
newstr = file.replace("_face_lefteyeclahe_closed", "")
newstr = newstr.replace("_face_righteyeclahe_closed", "")
print(newstr)
MyList.append(newstr)
#MyList =['glasses3.jpg','good1.jpg','good1.jpg','sun3.jpg','sun4.jpg','vsun4.jpg','sun5.jpg','sun5.jpg']
my_dict = {i:MyList.count(i) for i in MyList}
print my_dict
输出
{'sun5.jpg': 2, 'sun3.jpg': 1, 'good1.jpg': 2, 'glasses3.jpg': 1, 'sun4.jpg': 1, 'vsun4.jpg': 1}
答案 2 :(得分:0)
您可以使用分割方法并检查文件名是否重复:
import os
present_files = [] # This will contain the unique file names
for filename in os.listdir("eyeclosed"):
if filename.endswith(".jpg")
lookname = filename.split('_')[0] #This is the part of the name you are looking for to repeat itself
if lookname in present_files:
print(lookname)
else:
present_files.append(lookname+".jpg") #".jpg" is optional
您可以在方便时使用拆分方法。我认为确实没有必要替换元素然后附加它们。该脚本将打印出重复目录的名称。使用以下命令将输出保存到文件:
python scriptName.py > /tmp/fileCheck.txt