Ввод/вывод данных в GNU Octave
Материал из Xgu.ru
Автор: Владимир Кореньков
Правильная ссылка: http://xgu.ru/wiki/octave/input_output
Содержание |
[править] Работа с файловой системой
GNU Octave предоставляет практически полный набор системных команд для выполнения операций по управлению файлами и каталогами.
[править] Создание каталога
Синтаксис:
[status, msg, msgid] = mkdir (dir)
[status, msg, msgid] = mkdir (parent, dir)
где
dir | - название создаваемой директории |
parent | - название каталога в котором создается dir |
status | - равен 1, если функция выполнена успешно, в противном случае 0 |
msg | - текстовое сообщение о результате выполнения |
msgid | - уникальный идентификатор (unique message identifier) |
В первом варианте вызова функции параметр dir должен содержать полный путь, например
dir = "D:/Octave/Temp"
во втором - только название папки:
parent = "D:/Octave"
dir = "Temp"
[править] Удаление каталога
Синтаксис:
[status, msg, msgid] = rmdir (dir)
[status, msg, msgid] = rmdir (dir, "s")
Все параметры аналогичны функции создания директории, кроме ключа "s", который указывает на рекурсивное удаление всех подкаталогов dir.
[править] Проверка существования каталога
Синтаксис:
isdir (dir)
В случае существования dir, возвращает 1, иначе - 0.
[править] Просмотр содержимого каталога
Синтаксис:
[files, err, msg] = readdir (dir)
Если каталог dir существует, т.е. err=0, то каждый элемент массива files будет содержать название файла либо подкаталога, находящихся в dir.
Существует еще один способ просмотра содержимого каталога, который отличается от выше приведенного возможностью фильтрации по шаблону:
glob(pattern)
Например, при первом вызове функции, переменной content (по типу это должен быть cell array) будут присвоены названия всех файлов либо подкаталогов, во втором - только файлов, чье расширение "m":
content = glob("D:/Octave/Temp/*");
content = glob("D:/Octave/Temp/*.m");
[править] Переименование перемещение и копирование файла
Синтаксис:
[err, msg] = rename (f1, f2)
[status, msg, msgid] = movefile (f1, f2)
[status, msg, msgid] = copyfile (f1, f2)
Функции переименовывают, перемещают и копируют файл f1 в f2 (переменные должны содержать полные пути). В случае успешного выполнения операции, status=1 иначе 0 (или err=0 иначе -1).
[править] Проверка существования файла
Синтаксис:
[info, err, msg] = stat (file)
[info, err, msg] = lstat (file)
В общем, эти две функции предназначены для вывода информации о файле, но в случае отсутствия такового, err=-1.
Пример 1. Переименование файлов (добавление к началу имени каждого файла порядкового номера)
# Файл RenameFiles.m
#
# формируем шаблон поиска
# в массив Files записываем все названия файлов с полными путями
- Pattern = "D:/Octave/*.m";
# если в "D:/Octave" нет ни одного m-файла, завершаем работу
- Files = glob(Pattern);
# сортируем названия файлов по алфавиту
- if (length(Files) == 0)
- disp("Directory does not contain m-files");
- return;
- endif
# для каждого "старого" названия формируем "новое" имя
- Files = sort(Files);
# дописываем ведущие нули
- for i = 1:length(Files)
- OldName = File{i};
# выделяем из названия файла путь, имя и расширение
- if (i<10)
- Number = strcat("0", num2str(i));
- else
- Number = num2str(i);
- endif
# новое название состоит из пути к файлу, системного разделителя, порядкового номера, прочерка, старого имени и расширения
- [dir, name, ext, ver] = fileparts (OldName);
# выполняем операцию переименования
- NewName = strcat(dir, "/", Number, "-", name, ext);
- rename (OldName, NewName);
- endfor
Пример использования
> # В каталоге "D:/Octave" находятся следующие файлы:
> readdir("D:/Octave")
ans =
{}
- [1,1] = .
- [2,1] = ..
- [3,1] = article59_files
- [4,1] = Temp
- [5,1] = article59.htm
- [6,1] = ConvertDateToText.m
- [7,1] = InterpolationLagrange.m
- [8,1] = foo.txt
- [9,1] = SaveLoadFiles.m
>
> RenameFiles
>
> # Результат:
> readdir("D:/Octave")
ans =
{}
- [1,1] = .
- [2,1] = ..
- [3,1] = article59_files
- [4,1] = Temp
- [5,1] = 01-ConvertDateToText.m
- [6,1] = 02-InterpolationLagrange.m
- [7,1] = 03-SaveLoadFiles.m
- [8,1] = article59.htm
- [9,1] = foo.txt
[править] Функции ввод/вывода
GNU Octave имеет в своем составе два несколько различных способа ввода/вывода данных. Первый из них ориентирован на работу с массивами (т.е. с уже сформированными в табличном виде данными), а также сохранение/загрузку значений переменных. Второй способ - более гибкий и в значительной степени заимствованный из языка программирования C.
[править] Простые функции доступа к файлам
Синтаксис:
save options FileName v1 v2 ...vn или save ("FileName", "v1", "v2", ..., vn)
load options FileName v1 v2 ...vn или load ("FileName", "v1", "v2", ..., vn)
[править] Ввод/вывод текстовых данных
[править] Ввод/вывод двоичных данных
GNU Octave Инсталляция |
Синтаксис языка |
Командная строка
|
---|