在 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 中访问命令行参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中访问 Main 之外的命令行参数

如何访问函数内调用者的命令行参数?

如何访问命令行参数?

访问 bash 命令行参数 $@ vs $*

访问 bash 命令行参数 $@ vs $*

在 C++ Windows 应用程序中访问命令行参数