是否有将 REPL 内容打印到 Julia 语言文件的功能?
Is there a function for printing the REPL content to a file in Julia language?
我已经在REPL中输出了一些内容。有没有什么函数可以将所有这些内容打印到一个文件中?
您打印的内容没有保存在任何地方,所以没有办法保存。可能有些事情很容易做,但如果没有更多的细节,就不可能真正做到。
如果这些输出已经打印在 REPL 中,我想将它们保存到文件的唯一方法是手动复制粘贴。但是如果你想保存 REPL 输出历史以供将来使用,一种方法是重载 display
:
shell> touch repl_history.txt
julia> using REPL
julia> function REPL.display(d::REPL.REPLDisplay, mime::MIME"text/plain", x)
io = REPL.outstream(d.repl)
get(io, :color, false) && write(io, REPL.answer_color(d.repl))
if isdefined(d.repl, :options) && isdefined(d.repl.options, :iocontext)
# this can override the :limit property set initially
io = foldl(IOContext, d.repl.options.iocontext,
init=IOContext(io, :limit => true, :module => Main))
end
show(io, mime, x)
println(io)
open("repl_history.txt", "a") do f
show(f, mime, x)
println(f)
end
nothing
end
然后,让我们在 REPL 中随机打印一些内容:
julia> rand(10)
10-element Array{Float64,1}:
0.37537591915616497
0.9478991508737484
0.32628512501942475
0.8888960925262224
0.9967927432272801
0.4910769590205608
0.7624517049991089
0.26310423494973545
0.5117608425961135
0.0762255311602309
help?> gcd
search: gcd gcdx significand
gcd(x,y)
Greatest common (positive) divisor (or zero if x and y are both zero).
Examples
≡≡≡≡≡≡≡≡≡≡
julia> gcd(6,9)
3
julia> gcd(6,-9)
3
文件内容如下:
shell> cat repl_history.txt
10-element Array{Float64,1}:
0.37537591915616497
0.9478991508737484
0.32628512501942475
0.8888960925262224
0.9967927432272801
0.4910769590205608
0.7624517049991089
0.26310423494973545
0.5117608425961135
0.0762255311602309
gcd(x,y)
Greatest common (positive) divisor (or zero if x and y are both zero).
Examples
≡≡≡≡≡≡≡≡≡≡
julia> gcd(6,9)
3
julia> gcd(6,-9)
3
如果不需要以交互方式使用 REPL,只需使用 julia script.jl > output.txt
也可以。
如果要将变量保存到文件,可以JLD2 package。然后你可以保存每个变量如下:
using JLD2, FileIO
hello = "world"
foo = :bar
@save "example.jld2" hello foo
我已经在REPL中输出了一些内容。有没有什么函数可以将所有这些内容打印到一个文件中?
您打印的内容没有保存在任何地方,所以没有办法保存。可能有些事情很容易做,但如果没有更多的细节,就不可能真正做到。
如果这些输出已经打印在 REPL 中,我想将它们保存到文件的唯一方法是手动复制粘贴。但是如果你想保存 REPL 输出历史以供将来使用,一种方法是重载 display
:
shell> touch repl_history.txt
julia> using REPL
julia> function REPL.display(d::REPL.REPLDisplay, mime::MIME"text/plain", x)
io = REPL.outstream(d.repl)
get(io, :color, false) && write(io, REPL.answer_color(d.repl))
if isdefined(d.repl, :options) && isdefined(d.repl.options, :iocontext)
# this can override the :limit property set initially
io = foldl(IOContext, d.repl.options.iocontext,
init=IOContext(io, :limit => true, :module => Main))
end
show(io, mime, x)
println(io)
open("repl_history.txt", "a") do f
show(f, mime, x)
println(f)
end
nothing
end
然后,让我们在 REPL 中随机打印一些内容:
julia> rand(10)
10-element Array{Float64,1}:
0.37537591915616497
0.9478991508737484
0.32628512501942475
0.8888960925262224
0.9967927432272801
0.4910769590205608
0.7624517049991089
0.26310423494973545
0.5117608425961135
0.0762255311602309
help?> gcd
search: gcd gcdx significand
gcd(x,y)
Greatest common (positive) divisor (or zero if x and y are both zero).
Examples
≡≡≡≡≡≡≡≡≡≡
julia> gcd(6,9)
3
julia> gcd(6,-9)
3
文件内容如下:
shell> cat repl_history.txt
10-element Array{Float64,1}:
0.37537591915616497
0.9478991508737484
0.32628512501942475
0.8888960925262224
0.9967927432272801
0.4910769590205608
0.7624517049991089
0.26310423494973545
0.5117608425961135
0.0762255311602309
gcd(x,y)
Greatest common (positive) divisor (or zero if x and y are both zero).
Examples
≡≡≡≡≡≡≡≡≡≡
julia> gcd(6,9)
3
julia> gcd(6,-9)
3
如果不需要以交互方式使用 REPL,只需使用 julia script.jl > output.txt
也可以。
如果要将变量保存到文件,可以JLD2 package。然后你可以保存每个变量如下:
using JLD2, FileIO
hello = "world"
foo = :bar
@save "example.jld2" hello foo