Устаревшие версии
На этой странице перечислены возможности JLD2, которые сохранены для поддержки устаревшего кода. В частности, в следующих разделах описываются макросы @load
и @save
. Они широко применялись многими пользователями, но из-за них требовалось введение нового синтаксиса на основе макросов. Из-за этого у новых пользователей возникали проблемы, о чем поступало множество сообщений. С момента их появления язык Julia был существенно оптимизирован, и в данном случае макросы уже могут быть излишними.
Макросы @save
и @load
Макросы @save
и @load
— это простейший способ взаимодействия с файлом JLD2. Макрос @save
записывает одну или несколько переменных из текущей области в файл JLD2. Например:
using JLD2
hello = "world"
foo = :bar
@save "example.jld2" hello foo
Этот код записывает переменные hello
и foo
в наборы данных в новом файле JLD2 с именем example.jld2
. Макрос @load
загружает переменные из файла JLD2:
@load "example.jld2" hello foo
Этот код присваивает содержимое наборов данных hello
и foo
одноименным переменным в текущей области.
Рекомендуется явным образом задавать имена переменных, которые должны сохраняться в файле и загружаться из него, чтобы было понятно, откуда эти переменные взялись. Однако в целях удобства JLD2 также предоставляет варианты макросов @load
и @save
, которые не требуют явного присваивания имен переменным. При вызове без аргументов переменных макрос @save <filename>
записывает все переменные в глобальной области текущего модуля в файл <filename>
, а @load <filename>
загружает все переменные из файла <filename>
. При вызове без аргументов переменных макрос @load
требует указания имени файла в виде строкового литерала, то есть выбрать файл во время выполнения невозможно.
Возможна дополнительная настройка посредством синтаксиса присваивания и передачи параметров:
@save "example.jld2" bye=hello bar=foo @save "example.jld2" {compress=true} hello bar=foo
#
JLD2.@save
— Macro
@save filename var1 [var2 ...]
@save filename {compress=true} var1 name2=var2
Записывает одну или несколько переменных var1,...
из текущей области в файл JLD2 filename
.
Для использования в интерактивном режиме можно сохранить все переменные в глобальной области текущего модуля с помощью @save filename
. В более стабильном коде предпочтительнее использовать явную форму во избежание сохранения лишних переменных.
Пример
Сохранение строки hello
и массива xs
в JLD2-файле example.jld2:
hello = "world" xs = [1,2,3] @save "example.jld2" hello xs
Для передачи параметров в команду сохранения используйте {}
@save "example.jld2" {compress=true} hello xs
Для сохранения переменных под другим именем используйте стандартный синтаксис присваивания
@save "example.jld2" greeting=hello xarray = xs
#
JLD2.@load
— Macro
@load filename var1 [var2 ...]
Загружает одну или несколько переменных var1,...
из JLD2-файла filename
в текущую область и возвращает вектор имен загруженных переменных.
В интерактивном режиме форма вызова @load "somefile.jld2"
загружает все переменные из файла "somefile.jld2"
в текущую область. Эта форма поддерживает только литеральные имена файлов, и ее следует избегать в более стабильном коде, чтобы было понятно, откуда взялись переменные.
Пример
Для загрузки переменных hello
и foo
из файла example.jld2 используйте такой вызов:
@load "example.jld2" hello foo