如何在Julia中加载文件?

时间:2019-10-14 19:12:09

标签: julia

在某个时候,(我认为是Julia v0.7)您可以执行impl From<&Value> for ShyValue { fn from(v: &Value) -> Self { match v { Value::Null => ShyValue::Scalar(ShyScalar::Null), Value::Bool(b) => b.into(), // A Value::String may represent any of several ShyValue variants, so must be parsed. // The prefix (if any) usually determines which variant to create. Value::String(ref nan) if nan.to_lowercase() == "nan" => { ShyValue::Scalar(f64::NAN.into()) } Value::String(ref err) if err.starts_with("Error: ") => { ShyValue::error(err[7..].into()) } Value::String(ref func_name) if func_name.starts_with("FunctionName: ") => { ShyValue::FunctionName(func_name[13..].into()) } Value::String(ref prop_chain) if prop_chain.starts_with("PropertyChain: ") => { ShyValue::property_chain(prop_chain[15..].into()) } Value::String(ref variable) if variable.starts_with("Variable: ") => { ShyValue::Variable(variable[10..].into()) } Value::String(s) => s.clone().into(), Value::Number(ref n) if (*n).is_i64() => { ShyValue::Scalar(ShyScalar::Integer(n.as_i64().unwrap())) } Value::Number(ref f) => ShyValue::Scalar(ShyScalar::Rational(f.as_f64().unwrap())), Value::Array(a) => ShyValue::Vector( a.iter() .map(|item| match item { Value::Null => ShyScalar::Null, Value::Bool(b) => (*b).into(), Value::String(s) => s.clone().into(), Value::Number(ref n) if (*n).is_i64() => { ShyScalar::Integer(n.as_i64().unwrap()) } Value::Number(ref f) => ShyScalar::Rational(f.as_f64().unwrap()), _ => ShyScalar::Error("Unsupported type of scalar".into()), }) .collect(), ), Value::Object(o) => { let shy_object = ShyObject::empty(); { let mut assoc = shy_object.as_deref_mut(); for (key, value) in o { assoc.set(key, value.into()); } } ShyValue::Object(shy_object) } } } } 以便使用Julia加载文件。我尝试在v0.7上运行此命令,以查看是否收到过时警告,但即使在0.7上,它也表明@load loadpath thingtoload未定义。

如何使用Julia编程加载文件?

1 个答案:

答案 0 :(得分:1)

恐怕你的问题太含糊了。如何加载文件很大程度上取决于您拥有的文件类型。是否要读取二进制文件?什么样的二进制文件?还是文本文件?

但是,由于您提到了@load,所以大概是您在使用JLD.jl或其后续版本JLD2.jl

使用JLD2的简单示例是

julia> using JLD2

julia> @save "test.jld2" x

julia> x = nothing # "forgetting" x

julia> @load "test.jld2"
1-element Array{Symbol,1}:
 :x

julia> x
2×2 Array{Float64,2}:
 0.698264  0.319665
 0.252174  0.80799

请注意,由于它是软件包功能,而不是Base(或stdlib)的一部分,因此不会在0.7中显示。

(另请参阅堂兄线程How to save a file in Julia?