Повторяйте цикл, пока все совпадения не будут найдены, логика? - PullRequest
0 голосов
/ 09 ноября 2018

Я не могу понять логику для этого. Я пытаюсь сравнить список совпадений "совпадений" с файлами из папки. Если файл в «папках» совпадает с именем в «совпадениях», то нужно что-то сделать, но, очевидно, он не «пробует» каждое совпадение с каждым файлом. Я думаю, что мне нужно использовать цикл 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 голосов
/ 09 ноября 2018

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))
...