我目前正在用Julia编写代码,在某些情况下,我必须在命令提示符下运行.exe程序。让我们将该程序命名为"x.exe“。我决定将下面这行代码添加到Julia的代码中,以便在代码中执行程序:
run(pipeline('x.exe input.txt 5 500',stdout="output.txt"))
代码运行良好,但我必须手动插入值"5“和"500",这两个值分别是input.txt文件中的行数和input.txt文件中每行的项目数。它们也是存储在Julia中的Array的行数和列数。
有没有办法让代码直接读取这些数字?我试过了
writedlm("size.txt", transpose([size(Array)[1],size(Array)[2]])," ")
然后
run(pipeline('x.exe input.txt type size.txt',stdout="output.txt"))
但是它不工作..。
发布于 2019-02-10 01:23:58
您可以使用@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"))
正如您所看到的,Julia使用与shell相同的方法将变量插入到命令中(请参阅Julia manual section on Running External Programs)。
https://stackoverflow.com/questions/54612343
复制