我想检查文件名是否在同一文件夹上重复。如果我说明我的情况会更好
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
有人知道如何检查文件是否重复?谢谢
因为您只需要检查重复的(短)名称,所以您可以使用list来记住以前的名称,并检查此列表中是否存在下一个名称。
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)
顺便说一句:如果你需要多少次这个名字重复,那么你可以使用字典计算它或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")
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}
您可以使用split方法并检查文件名是否重复:
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