在cmd中使用Julia对象
我目前正在用Julia编写代码,在某个时候,我必须在命令提示符下运行一个.exe程序。让我们将该程序命名为“x.exe”。我决定在代码中添加以下行,以便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中的数组的行数和列数 代码有没有办法直接读取这些数字?
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命令提示符吗?是的:-)但是我的问题解决了谢谢!