在 Julia 中访问命令行参数
Posted
技术标签:
【中文标题】在 Julia 中访问命令行参数【英文标题】:Access command line arguments in Julia 【发布时间】:2014-01-30 04:11:02 【问题描述】:当我输入时
$ julia myprog.jl foo bar baz
我可以在我的代码中的哪里访问字符串"foo", "bar", "baz"
?
我正在寻找 sys.argv
的 Python 等价物
【问题讨论】:
【参考方案1】:啊,更多的网络搜索导致了正确的答案。关键字ARGS::ArrayASCIIString
包含命令行参数
这是一个简单的例子
# cli.jl
print(map(x->string(x, x), ARGS)) # Concatenate each arg onto itself and print
让我们在命令行测试一下:
$ julia cli.jl a b c
aa
bb
cc
【讨论】:
您能否提供一个最低限度的工作示例,然后接受您自己的答案? @juliohm 我已经按照您的建议添加了一个示例。【参考方案2】:一个更简单的例子:
#printargs.jl
println(ARGS[2]);
运行它
朱莉娅 printargs.jl a b c d
b
请注意,数组索引从 1 开始,NOT 0。因此 ARGS[2] 打印 b 而不是 c许多其他编程语言。
【讨论】:
【参考方案3】:https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinea
如果您确实需要 julia 提供的确切参数,包括 -e
,则有一种适用于 Windows 的解决方法。查看/proc/PID/cmdline
,您可以将其提取到linux。 Mac 没有相同的 /proc
选项,因此询问 ps
效果很好。
if Sys.iswindows()
mycmd = unsafe_string(ccall(:GetCommandLineA, Cstring, ()))
elseif Sys.isapple()
mycmd = strip(read(`/bin/ps -p $(getpid()) -o command=`, String))
elseif Sys.isunix()
mycmd = replace(read(joinpath("/", "proc", string(getpid()), "cmdline"), String), "\x00"=>" ")
else
mycmd = string(Base.julia_cmd()) * join(map(x->" " * x, ARGS))
end
但是典型的用例你只需要看ARGS
。
【讨论】:
【参考方案4】:julia> Pkg.add("ArgParse")
文档https://argparsejl.readthedocs.io/en/latest/argparse.html
【讨论】:
以上是关于在 Julia 中访问命令行参数的主要内容,如果未能解决你的问题,请参考以下文章