在 cmd 中使用 Julia 对象

coo*_*lsv 5 cmd julia

我目前正在 Julia 中编码,在某些时候,我必须在命令提示符下运行一个 .exe 程序。让我们将该程序命名为“x.exe”。我决定将以下行添加到我的代码中,以便 Julia 执行代码中的程序:

run(pipeline('x.exe input.txt 5 500',stdout="output.txt"))

代码运行良好,但我必须手动插入值“5”和“500”,它们分别是 input.txt 文件中的行数和 input.txt 文件中每行的项目数。它们也是存储在 Julia 中的数组的行数和列数。

有没有办法让代码直接读取这些数字?我试过

writedlm("size.txt", transpose([size(Array)[1],size(Array)[2]])," ")

进而

run(pipeline('x.exe input.txt type size.txt',stdout="output.txt"))

但它不起作用......

Sim*_*mon 2

您可以使用@sprintf, 例如,如下所示:

julia> using Printf

julia> x = [[1,2,3], [4,5,6]]
2-element Array{Array{Int64,1},1}:
 [1, 2, 3]
 [4, 5, 6]

julia> a = @sprintf("%d", size(x)[1][1])
"2"

julia> b = @sprintf("%d", size(x[1])[1][1])
"3"

julia> run(pipeline(`x.exe input.txt $a $b`,stdout="output.txt"))
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,Julia 使用与 shell 相同的方法将变量插入到命令中(请参阅Julia 手册中有关运行外部程序的部分)。

  • 我认为没有“@sprintf”插值也应该起作用,例如“x.exe input.txt $(size(x[1],1)) $(size(x[2],1))”。请注意,如果您插入表达式,则必须将它们包装在“(”和“)”中。 (2认同)