重新循环直到找到所有匹配项,逻辑吗?

时间:2018-11-09 18:24:48

标签: python-3.x for-loop glob

我不知道这样做的逻辑。我正在尝试将匹配项“匹配项”列表与文件夹中的文件进行比较。如果“文件夹”中的文件名等于“匹配”中的文件名,则可以执行某些操作,但显然不会“尝试”匹配每个文件。我在想我需要使用while循环,但是我不知道如何应用它。

import os
import glob
import os.path

folders = glob.glob('C:\\Corrections\\*.*')
matches = open('filename.txt', 'r')

for each in folders:
    splitname_one = each.split('\\', 3)   #Separate the filename from the path
    filename = splitname_one[3]           #Get Filename only
    basefile = filename.split('.', 1)     #Separate filename and file extension
    compare0 = basefile[0]                #assign base file name to compare0
    #print (basefile[0])
    for line in matches:
        match = line.split('.', 1)        #Separe base filename from file extension
        #print (match[1])
        compare1 = match[0]               #assign base file name to compare1
        if compare1==compare0:
            #os.rename(filename, 'C:\\holder\\' + filename)
            print ('We Have a match!')
        else:
            print ('no match :( ')

1 个答案:

答案 0 :(得分:1)

FWIW这就是我最终可能会做这样的事情的原因:

import glob
from os.path import basename, splitext

def file_base(filename):
    return splitext(basename(filename))[0]

folders = set(file_base(f) for f in glob.glob('C:\\Corrections\\*.*'))

with open('filename.txt') as fobj:
    matches = set(file_base(f) for f in fobj.readlines())

print(folders.intersection(matches))