lua чтение из файла

Существуют операции для установки стандартных (используемых по умолчанию) файлов ввода и файлов вывода, и все операции ввода/вывода работают с этими файлами. Функции для работы с неявными дескрипторами собраны в таблице io.

Для вызова функций используется запись вида:

Имя функции Описание
open Открывает файл в заданном режиме.
input При вызове с указанием имени файла, открывает данный файл (в текстовом режиме), и направляет его поток на стандартный поток ввода. При вызове с дескриптором файла, делает дескриптор файла стандартным дескриптором ввода (перенаправляет поток, соответствующий дескриптору файла, на стандартный поток ввода). При вызове функции без параметров, возвращает текущий файл ввода по умолчанию. В случае ошибок, данная функция возбуждает ошибку вместо того, чтобы возвратить код ошибки.
output Аналогична io.input, но работает со стандартным файлом вывода.
close Закрывает файл. Эквивалентна file:close. Вызванная без параметра, закрывает стандартный файл вывода.
read Аналогична io.input():read.
lines Открывает файл с заданным именем в режиме чтения и возвращает функцию-итератор (iterator function), которая при каждом последующем вызове возвращает новую строчку из файла. При обнаружении функцией-итератором конца файла, она возвращает nil (для окончания цикла) и автоматически закрывает файл. Вызов io.lines без указания имени файла эквивалентен io.input():lines(); таким образом, он обрабатывает строки стандартного файла ввода. В этом случае файл по окончанию итераций не закрывается автоматически.
write Эквивалентна io.output():write.
flush Сохраняет все данные, записанные в стандартный поток вывода. Эквивалентна file:flush для стандартного потока вывода.
tmpfile Возвращает дескриптор для временного файла. Этот файл открывается в режиме изменения и автоматически удаляется при завершении программы.
type Проверяет, является ли объект, переданный функции в качестве параметра, корректным дескриптором файла. Возвращает строку «file», если объект является открытым дескриптором файла; строку «closed file» — если объект является закрытым дескриптором файла; nil — если объект не является дескриптором файла.

Использование явных дескрипторов файлов

При использовании явных файловых дескрипторов сначала создаётся объект-дескриптор file (для этого используется функция io.open), после чего все операции с файлом выполняются при помощи методов данного дескриптора.

Для вызова методов используется запись вида:

где handle — имя переменной, содержащей объект-дескриптор.

Имя функции Описание
read Читает данные из файла в соответствии с заданными форматами.
lines Возвращает функцию-итератор, которая при каждом вызове возвращает новую строку из файла. В отличие от io.lines , эта функция не закрывает файл по окончании цикла (т. е. достижении конца файла). При вызове функции без параметров, возвращает текущий файл ввода по умолчанию. В случае ошибок, данная функция возбуждает ошибку вместо того, чтобы возвратить код ошибки.
write Записывает в файл значения всех своих аргументов.
flush Сохраняет все данные, записанные в файл.
setvbuf Устанавливает режим буферизации для выходного файла.
seek Устанавливает текущую позицию в файле.
close Закрывает файл.
  • В ИСУБД «CronosPRO» библиотека ввода/вывода дополнена множеством новых функций. Подробное описание этих функций содержится в «Cправочнике по расширениям языка Lua для CronosPRO», входящем в стандартную поставку системы.

© 1999– Группа компаний «Кронос-Информ». Все права защищены. Условия использования.

Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей .

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Пример работы с файлами в QLua (Lua): 122 комментария

f = io.open(getScriptPath()..»\Test.txt»,»r+»);
и почему в конце , «r+», что оно делает? И для чего нужна

f = io.open(getScriptPath()..»\Test.txt»,»r+»);
Не могли бы Вы объеснить чуть краче , тоесть , что такое getScriptPath()..»»\

«и почему в конце , «r+», что оно делает? И для чего нужна» — это режим открытия файла r от слова read — чтение, знак + означает что можно еще и писать будет в файл, в итоге «r+» означает режим чтения/записи

«Не могли бы Вы объеснить чуть краче , тоесть , что такое getScriptPath()..»»\» — getScriptPath() это функция встроенная в QLua, которая возвращает полный путь к скрипту, из которого она вызвана, оператор «..» называется оператором конкатенации, т.е. служит для склеивания нескольких строк в одну. В итоге, если Ваш скрипт находится в папке «C:\Trading», то в результате склейки получится строка «C:\Trading\Test.txt», двойной слеш используется для экранирования символа слеш, т.к. есть различные спецсимволы, которые содержат в себе слеш, например, »
» означает перенос строки, и чтобы в строку добавить именно символ слеш, который компьютер не будет пытаться распознать как начало спецсимвола, нужно экранировать его вторым слешем.

Такой вопрос. Если я «поставил» курсор в нужное место, то я могу как-то «вставлять» или наоборот «затирать»?
Например, есть строка в файле : «Я иду в школу», «ставлю» курсор перед «школу» . Если я в это место впишу «любимую» , то получится: «Я иду в любимую» правильно? Т.е. школа затрется? А можно «вставить» чтобы получилось «. в любимую школу». Или запись в файл как раз наоборот работает — вставляет , а не затирает? Или может даже есть разные способы? Понятно что можно считать весь файл и работать уже с текстом и потом полностью перезаписать. А вот сразу в файл так нельзя писать в разных режимах?

Только перезаписывать поверх можно, вставлять нельзя, файл это область памяти выделенная, к ней можно только добавить в конец еще какой-то объем памяти. Это как строка в тетради написанная, Вы же не сможете внутрь нее еще слов вставить, только перезаписать поверх, или в конец добавить. С файлами так же.

Здравствуйте!
Подскажите а как из файла прочитать данные в переменную.
Спасибо!

Здравствуйте! В примере, в 25 строке в цикле каждая строка файла считывается в переменную line, а потом значение этой переменной выводится в сообщении (message)

День добрый.
как получить значение из последней строки в txt файле?
как получить значение из последний строки предпоследнего столбца в файле csv, или например 3 столбца?

Добрый день, готовых функций для этого нет, вариант только изобретать свои, используя функции работы со строками, потому что текстовый файл, это, по сути, один массив символов, в котором строки отделяются символами переноса строки »
«, в CSV файле то же самое, строки разделены символами »
«, а ячейки символами «;» чаще всего. Если Вам нужно работать с разными элементами файла, то попробуйте лучше вот эту технологию применить: https://quikluacsharp.ru/quik-qlua/sohranenie-parametrov-skripta-qlua-lua-mezhdu-zapuskami/
Там все сводится к удобной работе с таблицей lua, ее считыванием из файла, изменением и повторным сохранением в файл.

Добрый день!
Данный скрипт

Ошибка lua:6: attempt to index global ‘f’ (a nil value)
Помогите разобраться!

Здравствуйте! Ответьте себе на вопрос: «Что делает функция getScriptPath() и как она работает ?» Можете здесь посмотреть: https://quikluacsharp.ru/qlua-osnovy/servisnye-funktsii-qlua-lua/

Видно, что недостаточно базовых знаний по программированию, приглашаю на скайп-обучение ��

В файле содержатся целые числа в десятичном виде. Преобразовать каждое число в двоичную форму. Выполнить шифрование данных таким образом, чтобы каждые восемь двоичных символов превращались в букву латинского алфавита. Таблица соответствия кодов буквам содержится во втором файле. Предусмотреть функцию для выполнения дешифрования.

Если в файле должна храниться таблица соответствия чисел буквам, к примеру

как мне их занести в таблицу в программе

что бы потом сравнивать их с уже существующими числами, и в последствии произвести замену числа на букву?

Оцените статью
SoftLast
Добавить комментарий