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

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

05.01.2022, 13:13. Показов 2141. Ответов 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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,309
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,309
07.01.2022, 10:56
то есть это частный случай, раз в году?
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,309
07.01.2022, 17:21
Semen-Semenich, а вообще есть способ определить в какой кодировке файл?
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
07.01.2022, 18:21
К сожалению, не существует «правильного» способа определения кодировки файла путем просмотра самого файла. Это универсальная проблема, не ограниченная питоном или какой-либо конкретной файловой системой.

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

В противном случае вам придется использовать некоторый эвристический подход, такой как chardet (одно из решений, приведенных в других ответах), который пытается угадать кодировку, анализируя данные в файле в необработанном байтовом формате. Если вы работаете в Windows, я думаю, что Windows API также предоставляет методы, позволяющие угадать кодировку на основе данных в файле.
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,309
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
07.01.2022, 18:28
мне кажется глупая затея. файл может и открыться без ошибок но в другой кодировке. в итоге кракозябры
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,309
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
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru