Перебор файлов в каталоге |
Здравствуйте, гость ( Вход | Регистрация )
Перебор файлов в каталоге |
21.12.2010, 22:11
Сообщение
#1
|
|
Продвинутый участник Группа: Пользователи Сообщений: 157 Регистрация: 19.1.2010 Из: Волгоград Пользователь №: 5 756 Спасибо сказали: 77 раз |
Имеем каталог, в котором лежат около 50 тысяч текстовых файлов.
Требуется вытащить инфу из этих файлов, причем не из всех, а имеющих в имени определенное слово. Возможно ли такое? Если возможно, то напишите пример скрипта. |
|
|
21.12.2010, 22:32
Сообщение
#2
|
|
Освоившийся участник Группа: Пользователи Сообщений: 248 Регистрация: 14.7.2008 Из: Хабаровск Пользователь №: 193 Спасибо сказали: 40 раз |
такс. Могу помочь только с вытаскиванием слова из файла.
Код file = Core.GetPtokaXPath().."scripts/mytxtfile.txt" -- путь к файлу, с имеющей в ней информацией slovo = 'тест' -- слово чтобы найти local sFile = io.open(file, "r" ) -- Открываем файл local s = sFile:read("*a"):match(slovo) -- Читаем и находим слово Core.SendToAll(s) -- Отправляем в общий чат sFile:close() --Закрываем файл остальное, жди ответа от Медалистов =) PS. Спасибо за тему. Сам нуждаюсь полного ответа по этой теме. |
|
|
21.12.2010, 22:45
Сообщение
#3
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
lfs в помощь
|
|
|
22.12.2010, 1:23
Сообщение
#4
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Допустим как-то вот так:
Код sWeNeedDataInFiles = "some data here" tData = {} require"lfs" function attrdir (path) for file in lfs.dir(path) do if file ~= "." and file ~= ".." then local f = path..'/'..file -- print ("\t "..f) local attr = lfs.attributes (f) assert (type(attr) == "table") if attr.mode == "directory" then attrdir (f) else local h = io.open(f, 'r+') if h then local sData = h:read('*a') if sData:find(sWeNeedDataInFiles, 1, true) then tData[f] = sData end h:close() end end end end end attrdir ("./somepath/") Лишь немного переделал |
|
|
24.12.2010, 14:24
Сообщение
#5
|
|
Продвинутый участник Группа: Пользователи Сообщений: 157 Регистрация: 19.1.2010 Из: Волгоград Пользователь №: 5 756 Спасибо сказали: 77 раз |
|
|
|
24.12.2010, 14:27
Сообщение
#6
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
ну раз сделал хорошо, но может стоит выложить решение?
Авось и другим людям будет полезно |
|
|
24.12.2010, 18:55
Сообщение
#7
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
dimajak, сорри, ошибся немного) хотя для поиска в имени файла надо изменить было всего чуть и удалить ненужное... Теперь знай, какое ТЗ, такое и решение А либсы отличаются тем, что выложенная для птоки собрана для нее же и работает только под ней, а с луафорджа работатет под обычным не измененным луа (в птоке луа изменен).
|
|
|
25.12.2010, 11:21
Сообщение
#8
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ну тут скорее не в изменённости lua дело.
1. Lua интерпретатор птохи находится в файле pxlua.dll, соответственно, библиотека lfs должна быть статически прилинкована к pxlua.dll. Библиотеки, взятые с luaforge, линкуются к lua51.dll. Поэтому первый фактор - это разные имена либ с интерпретаторами lua. 2. Птоха собрана компиляором borland, а либы с luaforge компилятором vs (visual studio). Либы borland не совместимы с либами vs, ибо либы borland имеют формат omf, а либы vs формат coff. |
|
|
28.12.2010, 1:00
Сообщение
#9
|
|
Продвинутый участник Группа: Пользователи Сообщений: 157 Регистрация: 19.1.2010 Из: Волгоград Пользователь №: 5 756 Спасибо сказали: 77 раз |
Saymon, на Дельфи7 сваял.
Не думаю, что интересно решение, ведь у каждого своя задача. А для реализации на D7 парсить файл таблицы совсем просто: а) первой строчкой ищем наименование своей таблицы б) потом ищем строку: символ табуляции + [" потом идет параметр + "] = значение и т.д. Пример для таблицы с никами юзеров: Код function TForm1.FindNick(nick: String; var nick_start, nick_end: Integer): Boolean; вызов функции:var i: Integer; S: String; begin Result := false; for i := 0 to tblMemo.Lines.Count - 1 do begin S := tblMemo.Lines[i]; if Pos(#9+'["'+nick+'"] = {', S) > 0 then begin nick_start := i; break; end; end; if nick_start > 0 then for i := nick_start to tblMemo.Lines.Count - 1 do begin S := tblMemo.Lines[i]; if Pos(#9+'}', S) > 0 then begin nick_end := i; Result := true; break; end; end; end; Код nick_start := 0; nick_end := 0; после вызова ф-ции FindNick в nick_start и nick_end имеем номера строк начала и конца блока юзера, если юзер не найден, то в конце файла создаем блок для него. При нахождении юзера передавал nick_start и nick_end в другую функцию для поиска других значений. Я использовал TMemo, в него загружал файл таблицы и по окончании сохранял в файл.if FindNick(nick, nick_start, nick_end) then begin ... end else begin tblMemo.Lines.Insert(tblMemo.Lines.Count-1, #9+'["'+nick+'"] = {'); tblMemo.Lines.Insert(tblMemo.Lines.Count-1, #9#9+'["Nick"] = "'+nick+'"'); tblMemo.Lines.Insert(tblMemo.Lines.Count-1, #9+'}'); end; Писал для переброски данных о юзерах из файлов созданных древним скриптом UserInfo под API1 (который для каждого юзера создавал 2 файла в одной директории и попутно два файла с айпи в другой) в формат этого скрипта. Если кому-нить нужно - выложу. |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Со стороны хаба возможно ли отследить скачку файлов у юзера? У юзера скачивают файл, хаб об этом знает? |
4 | dimajak | 9 452 | 26.10.2011, 13:03 Посл. сообщение: DEN 007 | |
Загрузка файлов Загрузка файлов хабом |
1 | Asp | 5 690 | 13.12.2009, 16:11 Посл. сообщение: Wariner | |
Скрипт обновления списка файлов | 1 | li4nost | 6 408 | 5.6.2009, 20:33 Посл. сообщение: ustas | |
Топ Самых Часто Скачиваемых Файлов API 2 |
10 | NikseR | 18 732 | 23.11.2008, 16:54 Посл. сообщение: Setuper |
|
Сейчас: 27.11.2024, 1:52 |