Memory Error python
Здраствуйте всем, писал код который должен считывать информацию и выводить совпадения из .txt, и нескольких .csv файлов
Сам код:
user = input('Введи айди:')
os.chdir('bd')
with open('data.txt', encoding='utf-8') as f:
result = f.read()
c = result.count(user)
print(f'Количество совпадений {c}')
input('Для вывода нажми Enter...')
with open('data.txt', encoding='utf-8') as f:
for line in f:
if user in line:
print(line.strip())
def search_in_csv(file_path, search_term):
count = 0
found_rows = []
with open(file_path, newline='', encoding='utf-8') as csvfile:
csvreader = csv.reader(csvfile)
for row in csvreader:
found = False
for value in row:
if search_term.lower() in value.lower():
found = True
if found:
count += 1
found_rows.append(row)
print(f"Количество совпадений: {count}")
input('Для вывода нажми Enter...')
for row in found_rows:
print(*row, sep='|')
for name in 'part1', 'part2':
format_bd = 'csv'
delimiters = '.'
result = name + delimiters + format_bd
search_term = user
search_in_csv(result, search_term)
Ошибка:
Traceback (most recent call last):
File "C:\Users\zisho\Desktop\spiydex\main.py", line 49, in <module>
result = f.read()
File "C:\python\lib\codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
MemoryError
По комментариям попытался сделать новый код для открытия txt файла, но теперь проблемы с табуляцией хотя все вроде нормально новый код:
import os
user = input('Введи айди:')
os.chdir('bd')
with open('data.txt', encoding='utf-8') as f:
for line in f:
result = f.line()
c = result.count(user)
print(f'Количество совпадений {c}')
input('Для вывода нажми Enter...')
if user in line:
print(line.strip())
Ошибка:
line 11
if user in line:
TabError: inconsistent use of tabs and spaces in indentation
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Вы можете без проблем посчитать число совпадений в отдельных строках, а не сразу во всём файле, который, видимо, не помещается целиком в памяти:
c = 0
with open('data.txt', encoding='utf-8') as f:
for line in f:
c += line.count(user)
print(f'Количество совпадений {c}')
input('Для вывода нажми Enter...')