есть папка с очень большим количество файлов txt формата. И у меня била задача найти среди етих файлов определенный текст.(то есть перебрать весь текст в файлах). И я написал такой код, но вот у меня возникла проблема, в тексте есть не только кириллица, но и латиница и коды в шестнадцатеричной системе.
Пример:
0x005B85BC = Wheeler, Rawson & Co.
0x00668D66 = Колтер
0x006A581E = Самогонщикам на заметку:~n~соберите оставшиеся после костра угли и процедите через них полученный самогон, чтобы очистить продукт от примесей.
0x007065EC = Брошюра с рецептом особого чудодейственного зелья.
0x0071467D = БЫВШИЙ СТРЕЛОК, СТАВШИЙ МАРШАЛОМ.~n~~n~ПОСЛЕДНИЙ РАЗ ЗАМЕЧЕН В АННЕСБЕРГЕ.
0x00718925 = Выбрать подтяжки.
0x00732098 = Шляпа «Феркрофт»
0x0073F497 = Улучшить повозку Штрауса
0x00740D9A = Облачите ваших детей в приличную одежду и обувь от Wheeler, Rawson & Co.
Вот сам код поиска(я не программист, потому не судите сильно код):
import os
text = input('Введите текст: ')
strings = []
for root, dirs, files in os.walk('txt'):
for filename in files:
if filename.endswith('.txt'):
path = f'{root}\{filename}'
with open(path, 'r', encoding='utf-8') as f:
for string in f:
if text in string:
line = dict()
line['file'] = filename
line['string'] = string
strings.append(line)
if strings == []:
print('Текст не был найден среди всех файлов!')
else:
for i in strings:
print(f'Файл: {i["file"]}, з текстом:\n{i["string"]}')
Код ошибки:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcf in position 16: invalid continuation byte
Я также менял тик кодировки на
latin-1, тогда код запускался, но оно не искало текст.
Я так понимаю когда оно проверяет каждое слово в тексте и попадает например на
0x0071467D и случается та ошибка, потому что ето шестнадцатеричная система, а не двоичная. То есть текст нужно переводить еще в бинар?