Чтение и запись в файлы с несколькими потоками - PullRequest
0 голосов
/ 17 июня 2020

Я читаю все текстовые файлы в определенном c каталоге, ищу ключевые слова и затем записываю их в другой текстовый файл. В настоящий момент мой код читает по одному файлу за раз, поэтому он очень медленный, и из того, что я прочитал, лучший способ ускорить процесс - использовать несколько потоков для одновременного чтения и записи. Я попытался сделать это с помощью import concurrent.futures, но в результате были написаны повторяющиеся записи.

Мой код без попытки многопоточности:

for filename in os.listdir(directory_path):
    with open(os.path.join(directory_path, filename), 'r', encoding="utf-8-sig") as file:
        print(filename)
        for line in file:
            line = line.lower()
            line = line.replace(' ', '')
            if not any(x in line for x in remove_items):
                line = line.strip()
                if all(ch in line for ch in check_char):
                    for item in keyword_list:
                        parts = item.split(':')
                        part1 = parts[0]
                        part2 = parts[1]
                        remaining_parts = parts[0].split('@')
                        domain = remaining_parts[1]
                        if keyword in domain:
                            print(domain)
                            keyword_list.append(domain)
                            with open(f'{directory_path}\!kw_list.txt', 'w') as f:
                                print(f"Writing {directory_path}\!kw_list.txt")
                                for item in keyword_list:
                                    f.write(f"{item}\n")
...