| 
 | 
Здравствуйте, гость ( Вход | Регистрация )
|   | 
| 
 | 
|  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 Спасибо сказали: 777 раз  | 
				Допустим как-то вот так: Код 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 раз  | 
				Немного не то - нужны были файлы с определенным словом в имени файла, а не внутри самого файла. Подумал что с таким перебором да еще и с парсингом файлов завесит хаб часа на два  Сделал на дельфе, всем спасибо! А чем отличается библиотека lfs от этой ? | 
|  | |
|  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 Спасибо сказали: 777 раз  | 
				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 | 10 415 | 26.10.2011, 13:03 Посл. сообщение: DEN 007 | 
|  | Загрузка файлов Загрузка файлов хабом | 1 | Asp | 6 238 | 13.12.2009, 16:11 Посл. сообщение: Wariner | 
|  | Скрипт обновления списка файлов | 1 | li4nost | 7 042 | 5.6.2009, 20:33 Посл. сообщение: ustas | 
|  | Топ Самых Часто Скачиваемых Файлов API 2 | 10 | NikseR | 20 194 | 23.11.2008, 16:54 Посл. сообщение: Setuper | 
|   | Сейчас: 1.11.2025, 2:16 |