сопоставить текст в файле при переборе структуры папки - PullRequest
0 голосов
/ 06 февраля 2020

Я ищу совпадения с текстом, который есть в списке, который я извлек из файла документа Word, используя docx. Я хочу найти файлы папок документов и распечатать совпадение.

import docx
import os
d = docx.Document('C:\\Users\\name\\document.docx')
tables = list(d.tables)

tbl = d.tables
drive_firmware_list = []
for table in tables:
    for row in table.rows:
        drive_firmware_list.append(row.cells[0].text)

print(drive_firmware_list)

Я извлек необходимую информацию из документ, используя приведенный выше код

directory = ('C:\\Users\\name\\My_reports')
doc_list =[]

count = 0
for subdir, dirs, files in os.walk(directory):
    for file in files:
        # print (os.path.join(subdir, file))
        filepath = subdir + os.sep + file
        if filepath.endswith(".docx"):
            if '2020'in filepath:# only selcting 2020 files 
                count +=1
                doc_list.append(filepath)

#use "\n" .join to print the list on seperate lines
# print('\n'.join(doc_list))

for file in doc_list:
    if 'Optimize' not in file:
        doc_list.remove(file)
print ('\n'.join(doc_list))

Я перебрал папку и вытащил все файлы слова * do c и удалил ненужные мне файлы, используя приведенный выше код. Я хочу перебрать doc_list для массива drive_firmware_list, и печатать спички. Каков наилучший способ сделать это, учитывая, что doc_list - это список слов docs?

1 Ответ

0 голосов
/ 06 февраля 2020

Если я правильно понимаю вашу проблему, вы хотите запустить код в первом примере для всех файлов .docx, которые вы собрали во втором примере?

Вы можете использовать для этого функцию:

import docx
import os

def extract_firmware_list(filename):
    d = docx.Document(filename)

    drive_firmware_list = []
    for table in d.tables:
        for row in table.rows:
            drive_firmware_list.append(row.cells[0].text)

    return drive_firmware_list

# i'm leaving out the code to build up the doc_list

for filename in doc_list:
    print(extract_firmware_list(filename))
...