Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 20.07.2021
Сообщений: 19

Подгрузка списков в Python

20.07.2021, 20:23. Показов 1077. Ответов 7

Студворк — интернет-сервис помощи студентам
Добрый день всем!
Я только начал осваивать питон, столкнулся с одной проблемой.

Есть код вида:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
 
contr = []
list1 = []
list2 = []
with open('base.txt', 'r') as a, open('file1.txt', 'r') as b, open('file2.txt', 'r') as c:
    contr = a.read().split()
    list1 = b.read().split()
    list2 = c.read().split()
    sb = set(list1)
    sc = set(list2)
for word in contr: 
    if word in sb or word in sc:
        print([f'{word}'])
Вкратце, он сравнивает между собой несколько файлов со списками, для нахождения совпадений в строках этих файлов.
В принципе, все работает нормально, за одним исключением - он подгружает все файлы в память, а так как они большого размера, плюс количество файлов больше десяти(тут я для примера взял только 3), то не хватает оперативки, чтобы все загрузить.
А теперь,собственно, вопрос к здешним гуру) . Можно как то реализовать в языке питон подгрузку файлов последовательно, чтобы он проверял по одному, затем закрывая их и освобождая память, после переходя к следующему? Пробовал через оператор if, но ничего толкового из этого не вышло. Буду рад любой подсказке и помощи.
З.Ы.: В интернете ничего внятного по данной теме не нашел.
Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2021, 20:23
Ответы с готовыми решениями:

Создание списков Python
Напишите функцию, принимающую от 1 до 3 параметров — целых чисел (как стандартная функция range). Единственный обязательный аргумент —...

Формирование вложенных списков Python
Cделать программу: Используя вложенные циклы; используя генераторы списков. Вот мой код, я сделал генератор, его менять нинадо: ...

Сравнение списков в Python
Здравствуйте, объясните пожалуйста почему вот эти строки не равны: s = b = s.reverse()

7
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
20.07.2021, 21:24
bomber666, да
так
file.readline()
или так
file.read(5)

Добавлено через 1 минуту
Цитата Сообщение от bomber666 Посмотреть сообщение
он подгружает все файлы в память
нет, питон не подгружает файлы в память автоматически, это ты грузишь их в переменные в ручную. readline будет оптимальным решением
1
1 / 1 / 0
Регистрация: 20.07.2021
Сообщений: 19
20.07.2021, 21:51  [ТС]
Спасибо за подсказку! Попробую так
0
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
21.07.2021, 10:36
bomber666, можно использовать свой контекстный менеджер для работы с несколькими файлами, лучше наименования файлов в отдельную переменную:
Python
1
2
import os
filenames = os.listdir(os.getcwd)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from contextlib import contextmanager
 
@contextmanager
def multi_file_manager(files, mode='rt'):
    """ Open multiple files and make sure they all get closed. """
    files = [open(file, mode) for file in files]
    yield files
    for file in files:
        file.close()
 
filenames = 'file1', 'file2', 'file3'
 
with multi_file_manager(filenames) as files:
    a = files[0].readline()
    b = files[2].readline()
        ...
1
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
22.07.2021, 20:46
AlexMarkov, плохой совет дзен питона гласит:
простое лучше, чем сложное
очевидное лучше, чем скрытое
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
22.07.2021, 20:54
bomber666, Пример работы с файлом
Python
1
2
3
4
5
6
MyList = ["Самара", "Сочи", "Мурманск", "Анапа"] 
MyFile=open('output.txt', 'w', encoding='utf-8')
for element in MyList:
     MyFile.write(element)
     MyFile.write('\n')
MyFile.close()
Добавлено через 2 минуты
Python
1
2
3
4
5
6
7
8
9
def sum_ints_in_file(file_name):
    with open(file_name, 'r') as fp:
        return sum(map(int, fp.read().split()))#читаем то, что в файле с ходу)
 
 
print(sum_ints_in_file('file.txt'))
if __name__ == '__main__':
    filename = input()
    sum_ints_in_file(file_name='1.txt')
0
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
22.07.2021, 21:12
user-ganz, красивое лучше, чем уродливое. Запись с перечислением наименований файлов ужасна с моей точки зрения, а так
полезно знать и о менеджерах контекста и о декараторах. Красота спасет мир, вопрос кто спасет красоту.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
22.07.2021, 21:48
Цитата Сообщение от bomber666 Посмотреть сообщение
Можно как то реализовать в языке питон подгрузку файлов последовательно
Конечно, можно.

Цитата Сообщение от bomber666 Посмотреть сообщение
затем закрывая их и освобождая память, после переходя к следующему?
Просто сделай именно так. В не три файла сразу.

Python
1
2
3
4
5
6
files = ['file.txt', 'file1.txt', 'file2.txt']
for file in files:
    with open(file) as f:
        text = f.read() #  если хочешь прочитать сразу весь файл
        #for line in f:  # если хочешь читать построчно
        #   print(line)

Для особого крупных файлов есть mmap.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2021, 21:48
Помогаю со студенческими работами здесь

Матрица смежности из списков на Python
Напишите программу, которая строит матрицу смежности графа на основе списков смежности для каждой вершины. Входные данные В первой...

Python - Реализовать эффективный алгоритм получения из большого количества отсортированных списков одного отсо
Реализовать эффективный алгоритм получения из большого количества отсортированных списков одного отсортированного списка.

Clojure Преобразования keys и values списков в словарь (задания от Яндекса для Python разработчика)
http://company.yandex.ru/job/vacancies/dev_python_main.xml (вопрос 1). За None положим nil. В качестве словаря hash-table, alist,...

Объединение 2 и более списков в список списков по индексу без использования циклов
Уважаемые товарищи, подскажите есть ли способ объединения 2 и более списков в список списков по индексу без использования циклов. К примеру...

Из 2 списков составить 3, в котором буду все неповторяющиеся элементы этих списков
Дано 2 списка ,на выходе должен получиться список из элементов, которые присутствуют только в одном из списков, т.е. должно получиться . ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru