Найти - Пользователи
Полная версия: with open, сразу несколько файлов и перебрать их в цикле
Начало » Python для новичков » with open, сразу несколько файлов и перебрать их в цикле
1
Mazay_Ka
Привет, вот такой вопрос допустим у меня есть 2 файлы мне надо их сравнить, к примеру в одном ключи для второго , то есть я перебираю все ключи с первого файла и сверяю с каждым значение во втором файле, если совпадает пишу в третий, если представить что эти файлы очень большие и выгружать каждый в память и потом перебирать очень ресурсоемко, как тогда быть пробовал типа так

with open(file1, 'r') as keys_file, open(file2, 'r') as data_file, open(file3, 'w') as result_file:
      for key in key_file:
              for line in data_file:
                      if re.findall(key, line):
                            # пишем дальше в  result_file

получается перебираю второй файл только с первым ключем, тоесть когда обращаюсь к следующему файлу прошлый закрывается, и дальше по циклу не идет проверка с другими ключами, вот не могу понять как это все сделать сразу в одном цикле, выгружать каждый файл в память и потом уже перебирать не красиво и если будет файл весить пару гиг не вариант, знаю тут есть какая-то хитрость или другой подход. Подскажите пожалуйста.
Спасибо за ответ.
py.user.next
keys_file = open(file1)
data_file = open(file2)
result_file = open(file3, 'w')
 
with keys_file, data_file, result_file:
    for key in key_file:
        data_file.seek(0)
        for line in data_file:
            if re.findall(key, line):
                ...

Если питон третий и файлы могут содержать не ascii, нужно обязательно указать кодировку при открытии каждого файла.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB