用python检查文件名

问题描述 投票:0回答:3

我想检查文件名是否在同一文件夹上重复。如果我说明我的情况会更好

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 

有人知道如何检查文件是否重复?谢谢

python filenames
3个回答
1
投票

因为您只需要检查重复的(短)名称,所以您可以使用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")

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}

0
投票

您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.