@Akshin17
Пайтон програмист

Выдает MemoryError?

with open(r'C:\Users\AKSHIN\Downloads\errr.txt','r',encoding='utf-8')as f:
  	z = f.read().split('\n')
  	for line in z:
              print(line)

в текстовике 6 милионов строк из за этого выводится ошибка
Traceback (most recent call last):
File "C:\Users\AKSHIN\Desktop\python\chtoto.py", line 2, in
z = f.read().split('\n')
MemoryError
[Finished in 0.6s with exit code 1]
[shell_cmd: py -3 -OO -u "C:\Users\AKSHIN\Desktop\python\chtoto.py"]
[dir: C:\Users\AKSHIN\Desktop\python]
[path: C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\iCLS\;C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Users\AKSHIN\PycharmProjects\akshin\regchecker\insta\geckodriver.exe;C:\Users\AKSHIN\AppData\Local\Programs\Python\Python38-32;]
  • Вопрос задан
  • 893 просмотра
Решения вопроса 1
LazyTalent
@LazyTalent
Data Engineer, Freelancer
with open(file_name, 'r') as f:
    for line in f:
        # your code

В этом случае файл будет читаться построчно, а не будет загружаться полностью в память. Это называеться генератором, подробнее здесь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
MemoryError - исключение, возникающее в некритичных случаях исчерпания свободной памяти. Можно обработать его, удалив объекты из памяти.
А вообще, вы фигней занимаетесь. 6 млн. строк вывести в консоль. Вам и жизни не хватит, что бы прочитать каждую строку. Выводите только те строки, которые содержат нужный текст(можете прибавить ещё себе проблем, использовать регулярные выражения - это из бородатого анекдота)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы