访问Julia中的命令行参数

时间:2014-01-11 00:35:48

标签: julia

当我输入

$ julia myprog.jl foo bar baz

在我的代码中,我可以访问字符串"foo", "bar", "baz"吗?

我正在寻找与sys.argv

相当的Python

4 个答案:

答案 0 :(得分:33)

啊,更多的网络搜索导致了正确的答案。关键字ARGS::Array{ASCIIString}包含命令行参数

这是一个简单的例子

# 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

答案 1 :(得分:16)

一个更简单的例子:

  

#printargs.jl

     

的println(ARGS [2]);

将其作为

运行
  

julia printargs.jl a b c d

     

B'/ P>

请注意,数组索引从1和 NOT 0开始。因此,ARGS [2]打印 b 而不是 c ,如同许多其他编程语言。

答案 2 :(得分:0)

https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinea

如果您真的需要传给julia的确切参数,包括my_test_df = data.frame(char_val = "110,000.00") my_test_spark = my_test_df %>% copy_to(sc, ., 'my_test_df_spark' ) my_test_spark # Source: spark<my_test_df_spark> [?? x 1] # char_val # <chr> # 1 110,000.00 my_test_spark %>% mutate(my_new_char = regexp_replace(char_val, ',','')) %>% mutate(my_numeric = as.numeric(my_new_char)) %>% head # # Source: spark<?> [?? x 3] # char_val my_new_char my_numeric # * <chr> <chr> <dbl> # 1 110,000.00 110000.00 110000 ,则可以使用Windows的解决方法。查看-e,可以将其解压缩到Linux。 Mac没有相同的/proc/PID/cmdline选项,因此询问/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

答案 3 :(得分:0)

julia> Pkg.add("ArgParse") https://argparsejl.readthedocs.io/en/latest/argparse.html

上的文档