ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   пиоск по всем файлам в папке (https://forum.antichat.xyz/showthread.php?t=428614)

dondy 05.08.2015 17:21

хочу определенные совпадения искать по лог файлам, их очень много и у всех разные имена

расширение .txt

все логи писались в строку

как открыть все файлы с расширением txt, провести по ним поиск на совпадения в строках и вывести все строки с совпадениями ?

мой вариант работает только с одним файлом

PHP код:

[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR


binarymaster 05.08.2015 17:55

Цитата:

Сообщение от dondy

как открыть все файлы с расширением txt, провести по ним поиск на совпадения в строках и вывести все строки с совпадениями ?
мой вариант работает только с одним файлом

PHP код:

[COLOR="#000000"][COLOR="#0000BB"]$searchthis[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"user"[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$matches[/COLOR][COLOR="#007700"]= array();
[/
COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'logs/'[/COLOR][COLOR="#007700"];
foreach([/
COLOR][COLOR="#0000BB"]glob[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'*.txt'[/COLOR][COLOR="#007700"]) as[/COLOR][COLOR="#0000BB"]$filename[/COLOR][COLOR="#007700"]) {
[/
COLOR][COLOR="#0000BB"]$handle[/COLOR][COLOR="#007700"]= @[/COLOR][COLOR="#0000BB"]fopen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$filename[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"r"[/COLOR][COLOR="#007700"]);
if ([/COLOR][COLOR="#0000BB"]$handle[/COLOR][COLOR="#007700"])
{
while (![/COLOR][COLOR="#0000BB"]feof[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$handle[/COLOR][COLOR="#007700"]))
{
[/
COLOR][COLOR="#0000BB"]$buffer[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]fgets[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$handle[/COLOR][COLOR="#007700"]);
if([/COLOR][COLOR="#0000BB"]strpos[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$buffer[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$searchthis[/COLOR][COLOR="#007700"]) !==[/COLOR][COLOR="#0000BB"]FALSE[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"]$matches[/COLOR][COLOR="#007700"][] =[/COLOR][COLOR="#0000BB"]$filename[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]': '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$buffer[/COLOR][COLOR="#007700"];
}
[/
COLOR][COLOR="#0000BB"]fclose[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$handle[/COLOR][COLOR="#007700"]);
}
}
[/
COLOR][COLOR="#0000BB"]print_r[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$matches[/COLOR][COLOR="#007700"]);[/COLOR][/COLOR


dondy 05.08.2015 18:01

binarymaster, Большое Спасибо !

Sagittarius 05.08.2015 19:44

Извиняюсь за быдлокодинг, за минуту накидал. На питоне как-то так.

Код:

import os
search = "phrase"
for fl in os.listdir("./"):
    if fl[-4:] == ".txt":
        for line in open(fl,"r"):
            if search in line:
                print(line)



Время: 03:40