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

Поиск строк в файлах по признаку

05.01.2022, 13:13. Показов 2609. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
IDLE (Python 3.10 64-bit)
В каталоге много текстовых файлов. Нужно пройти эти все файлы построчно.
Найти в этих файлах, если есть, строки содержащие это: /udp/
Строки все разные такого вида: http://46.160.166.9:81/udp/239.254.2.189:1234
Далее сохранить построчно эти найденные строки во вновь созданный текстовый файл.
Прошу подскажите.
Заранее благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.01.2022, 13:13
Ответы с готовыми решениями:

Поиск по определенному признаку и склеивание строк
Здравствуйте уважаемые форумчане. Я очень рассчитываю на вашу помощь. Помогите решить задание, так как я не очень силен в VBA. ...

Поиск в файлах строк по заданному слову и вывод найденных строк в текстовый файл
Прошу помощи, т.к. в командных файлах разбираюсь слабо. Имеется некое количество txt-файлов в подкаталогах (все именуются aircraft.cfg)....

Поиск в файлах строк и дальнейшее использование найденных строк и имён и дат изменения содержащих их файлов
Дан каталог, нужно в нём и во всех его подкаталогах найти файлы *.log, содержащие текст в любой строке с прописной или заглавной...

36
1 / 1 / 0
Регистрация: 02.02.2019
Сообщений: 110
05.01.2022, 17:14  [ТС]
Студворк — интернет-сервис помощи студентам
Ошибки:
Traceback (most recent call last):
File "C:\Users\Пк\Desktop\01_playlists\22.py" , line 8, in <module>
for line in f_in.readlines():
File "C:\Python\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors, decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 352: character maps to <undefined>
0
 Аватар для Semen-Semenich
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,314
05.01.2022, 17:24
satfan, у вас там файл 22.py лежит. я же сразу спрашивал
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
В каталоге много текстовых файлов
то есть ничего другого нет кроме файлов с расширением txt?
а так ошибка говорит о кодировке. оставьте в этой папке
playlists только файлы тхт а скрипт вынесите рядом с папкой
0
1 / 1 / 0
Регистрация: 02.02.2019
Сообщений: 110
05.01.2022, 17:29  [ТС]
Вот вырезал. Опять ошибка:
Traceback (most recent call last):
File "C:\Users\Пк\Desktop\01_playlists\22.py" , line 8, in <module>
for line in f_in.readlines():
File "C:\Python\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors, decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 352: character maps to <undefined>
0
 Аватар для Semen-Semenich
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,314
05.01.2022, 17:36
попробуйте кодировку указать в 7 строке
Python
1
with open(file_name,'r', encoding = 'cp1251') as f_in:
0
1 / 1 / 0
Регистрация: 02.02.2019
Сообщений: 110
05.01.2022, 17:40  [ТС]
Опять ошибка:
Traceback (most recent call last):
File "C:\Users\Пк\Desktop\01_playlists\22.py" , line 8, in <module>
for line in f_in.readlines():
File "C:\Python\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors, decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 352: character maps to <undefined>
0
 Аватар для Semen-Semenich
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,314
05.01.2022, 17:42
satfan, можете эту папку playlists загрузить сюда. гадать по интернету это нудно.
0
1 / 1 / 0
Регистрация: 02.02.2019
Сообщений: 110
05.01.2022, 17:45  [ТС]
Вот она
Вложения
Тип файла: rar playlists.rar (1.98 Мб, 2 просмотров)
0
 Аватар для Semen-Semenich
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,314
05.01.2022, 18:32
файлы с разными кодировками есть.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import os
 
main_dir =  os.path.abspath(os.curdir)
file_list = os.listdir('playlists')
os.chdir('playlists')
result = []
for file_name in file_list:
    try:
        with open(file_name,'r', encoding = 'utf-8') as f_in:
            for line in f_in.readlines():
                if 'udp' in line:
                    result.append(line)
                    
    except:
        with open(file_name,'r', encoding = 'cp1251') as f_in:
            for line in f_in.readlines():
                if 'udp' in line:
                    result.append(line)
                    
os.chdir( main_dir)                   
with open('result.txt','w') as f_out:
    f_out.write(''.join(result))
print('ok')
1
1 / 1 / 0
Регистрация: 02.02.2019
Сообщений: 110
05.01.2022, 18:47  [ТС]
Уважаемый Semen-Semenich
Огромное спасибо.
Сработало. Ок.
Удачи. Здоровья. С Новым годом !
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
07.01.2022, 05:55
Semen-Semenich, подскажите, как это работает:
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
for file_name in file_list:
    try:
        with open(file_name,'r', encoding = 'utf-8') as f_in:
            for line in f_in.readlines():
                if 'udp' in line:
                    result.append(line)
except:
        with open(file_name,'r', encoding = 'cp1251') as f_in:
я понял, что читать должно в зависимости от ситуации в utf-8 или cp1251
но так разве будет ошибка если файл в cp1251 а прочитает utf-8, просто будут крякозябры и всё......
0
 Аватар для Semen-Semenich
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,314
07.01.2022, 10:49
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
файл в cp1251 а прочитает utf-8, просто будут крякозябры и всё.
вроде так и должно быть. но ошибка
Цитата Сообщение от satfan Посмотреть сообщение
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 352: character maps to <undefined>
говорит что не читается байт в позиции. почему не знаю. так глубоко не копал.
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
07.01.2022, 10:56
то есть это частный случай, раз в году?
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
07.01.2022, 17:21
Semen-Semenich, а вообще есть способ определить в какой кодировке файл?
0
 Аватар для Semen-Semenich
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,314
07.01.2022, 18:21
К сожалению, не существует «правильного» способа определения кодировки файла путем просмотра самого файла. Это универсальная проблема, не ограниченная питоном или какой-либо конкретной файловой системой.

Если вы читаете файл XML, первая строка в файле может дать вам подсказку о том, что такое кодировка.

В противном случае вам придется использовать некоторый эвристический подход, такой как chardet (одно из решений, приведенных в других ответах), который пытается угадать кодировку, анализируя данные в файле в необработанном байтовом формате. Если вы работаете в Windows, я думаю, что Windows API также предоставляет методы, позволяющие угадать кодировку на основе данных в файле.
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
07.01.2022, 18:24
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
К сожалению, не существует «правильного» способа определения кодировки файла путем просмотра самого файла
уже прочёл это, остановился на этом:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def df_OPEN_file(f_name):  # чтение файла с разными кодировками
    import codecs
    encodings = ['utf-8', 'utf-16', 'windows-1250', 'windows-1251', 'windows-1252']
    for e in encodings:
        try:
            fh = codecs.open(f_name, 'r', encoding=e)
            f_text = fh.read()
            f_line_count = f_text.count('\n') + 1  # 1 прибавляем, так как у последней строки нет абзаца
            fh.seek(0)  # чтобы прочитать файл ещё раз, надо предварительно перейти в начало файла
        except UnicodeDecodeError:
            print('ошибка юникода, пытаюсь использовать другую кодировку:', e)
        else:
            # print('открытие файла с кодировкой:', e)
            return f_text, f_line_count
            break
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
Если вы работаете в Windows
да в нём же.......
0
 Аватар для Semen-Semenich
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,314
07.01.2022, 18:28
мне кажется глупая затея. файл может и открыться без ошибок но в другой кодировке. в итоге кракозябры
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
07.01.2022, 18:36
ну да поменял кодировку и ошибка UTF-16 stream does not start with BOM
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.01.2022, 18:36

Поиск нужных строк в HTML-файлах по заданному ключу и запись определённых слов из найденных строк в CSV-файл
Есть 100 файлов в папке BDVK с форматом .html Нужно сделать программу которая ищет в html файле по строкам - ключевым словам и сохраняет...

Поиск строк в файлах
3. в файлах с расширением .log из директории / var / log вывести все строки из строкой &quot;error&quot; добавить алиас для задания №3

Поиск строк в файлах
Надо найти все файлы *.texture.txt в указанной папке и найти эти файлы. В этих файлах надо искать в файлах строку alpha=%имя файла%.jpg и...

Поиск одинаковых строк в файлах
Доброго дня.Подскажите как реализовать поиск дубликатов строк, в выбранных файлах. К примеру в Memo искомый текст и есть 10 txt...

Поиск обрезанных строк в текстовых файлах csv
На сервере(linux ssh) есть много файлов csv - разделитель полей &quot;;&quot;, а разделитель строк символ переноса строки. По каким то причинам...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru