Есть ли функция для печати содержимого REPL в файл на языке Julia? - PullRequest
4 голосов
/ 14 марта 2020

У меня уже есть некоторый контент в REPL. Есть ли какая-либо функция для печати всего этого содержимого в файл?

Ответы [ 3 ]

1 голос
/ 17 марта 2020

Если эти выходные данные уже были напечатаны в 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, что также может помочь.

0 голосов
/ 17 марта 2020

Если вы хотите сохранить переменные в файл, вы можете JLD2 package . Затем вы можете сохранить каждую переменную, как показано ниже:

    using JLD2, FileIO
    hello = "world"
    foo = :bar
    @save "example.jld2" hello foo
0 голосов
/ 16 марта 2020

То, что вы напечатали, нигде не сохраняется, так что нет, сделать это невозможно. Может быть, что-то легко сделать, но без подробностей невозможно найти способ по-настоящему.

...