Как выполнить поиск в списке поиска, чтобы найти совпадения в пути к каталогу с помощью os.walk? - PullRequest
0 голосов
/ 19 октября 2018

пожалуйста, дайте мне знать, если на этот вопрос уже был дан ответ.Я оглянулся вокруг и не думаю, что нашел свое точное положение раньше.

Цель

В любом случае, мне нужно найти в каталоге строку из списка поиска.Я получил его, где, если я ввожу строку вручную, это работает, но не, если я пытаюсь извлечь из списка, проанализированного из CSV.

Желаемый результат:

names (CSV Input): 

username, 123456, 453125

directory structure and output using lookup list: 
C:\path\to\cwd\123456\123456.xlxs <-- should match
C:\path\to\cwd\123456\user.docx <-- should match
C:\path\to\cwd\453125\files\randomfilename.docx <-- should match
C:\path\to\cwd\365897\365897.pdf <-- should not match
C:\path\to\cwd\usermcuser\365897\filename.pdf <-- should not match

Код пока:

with open('Path\to\CSV.csv', encoding='UTF-8') as names_file:
    names= [line.strip() for line in names_file] #Open CSV and get each string from the first column 


source = os.getcwd()

    for r, d, f in os.walk(source):
        for file in f:
            for name in names: 
                if name in file: #works correctly if I do not use for loop and type in an element from the list 
                    print(os.path.join(r, file))

Проблема:

при добавлении моего for loop для поиска в моем списке имен, он получает все результаты из каталога, а не только совпадения.Это работает правильно, если я просто скажу это

    for r, d, f in os.walk(source):
        for file in f:
            if "123456" in file:
                print(os.path.join(r, file))
...