在cmd中使用Julia对象

在cmd中使用Julia对象,cmd,julia,Cmd,Julia,我目前正在用Julia编写代码,在某个时候,我必须在命令提示符下运行一个.exe程序。让我们将该程序命名为“x.exe”。我决定在代码中添加以下行,以便Julia在代码中执行程序: run(管道('x.exe input.txt 5 500',stdout=“output.txt”) 代码运行得很好,但我必须手动插入值“5”和“500”,这两个值分别是input.txt文件中的行数和input.txt文件中每行的项数。它们也是存储在Julia中的数组的行数和列数 代码有没有办法直接读取这些数字?

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

run(管道('x.exe input.txt 5 500',stdout=“output.txt”)

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

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

writedlm(“size.txt”、转置([size(Array)[1]、size(Array)[2]])、”)

然后

run(管道('x.exe input.txt type size.txt',stdout=“output.txt”)


但它不起作用……

您可以使用
@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相同的方法将变量插入命令(请参见)

很抱歉,@coolsv,我自己以前没有使用过
pipeline()
,也没有意识到需要在命令周围使用反勾号,而不是使用字符串。我已经更新了我的答案。我认为如果没有
@sprintf
,插值也应该有效,例如
x.exe input.txt$(size(x[1],1))$(size(x[2],1))
。请注意,如果插入表达式,则必须将它们包装在
@coolsv中:如果您在Linux环境中,仍然需要使用
run()
@spawn
并行运行任务,因此其工作方式略有不同。你可以在任何环境中使用它。有关更多信息,请参阅。进程信号6为“中止”(请参阅)。这使我认为您的程序
Y
可能正在中止,因为它有一个bug。您能否直接从shell成功运行
/Y input.txt a b
,并用中正确的数字替换
a
b
?我终于找到了错误!input.txt文件的名称错误。我纠正了它,现在它的工作!无论如何,谢谢你的帮助,因为在Linux上这样做对我很有用:-)你真的是指Windows命令提示符吗?是的:-)但是我的问题解决了谢谢!