Julia ArgParse.jl中的参数文件?

Julia ArgParse.jl中的参数文件?,julia,argparse.jl,Julia,Argparse.jl,Python的argparse有一种从文件读取参数的简单方法: 不要一个接一个地传递你的论点: python script.py --arg1 val1 --arg2 val2 ... 你可以说: python script.py @args.txt 然后从args.txt读取参数 在ArgParse.jl中有这样做的方法吗 注:如果没有“默认”的方法,也许我可以手动完成,通过调用从文件读取的参数列表上的parse_args。我知道如何以一种肮脏的方式来实现这一点,但如果我想在Python

Python的argparse有一种从文件读取参数的简单方法:

不要一个接一个地传递你的论点:

python script.py --arg1 val1 --arg2 val2 ...
你可以说:

python script.py @args.txt
然后从
args.txt
读取参数

在ArgParse.jl中有这样做的方法吗


注:如果没有“默认”的方法,也许我可以手动完成,通过调用从文件读取的参数列表上的
parse_args
。我知道如何以一种肮脏的方式来实现这一点,但如果我想在Python中复制argparse的行为,它会变得很混乱,我可以在命令行中传递带有
@
的多个文件以及参数,然后一个参数的值就是传递给这个参数的最后一个值。执行此操作的最佳方法是什么?

此功能目前不在
ArgParse.jl
中,尽管添加并不困难。我已经准备好了一本书

在此期间,以下代码足以满足您的需要:

# faithful reproduction of Python 3.5.1 argparse.py
# partial copyright Python Software Foundation
function read_args_from_files(arg_strings, prefixes)
    new_arg_strings = AbstractString[]

    for arg_string in arg_strings
        if isempty(arg_string) || arg_string[1] ∉ prefixes
            # for regular arguments, just add them back into the list
            push!(new_arg_strings, arg_string)
        else
            # replace arguments referencing files with the file content
            open(arg_string[2:end]) do args_file
                arg_strings = AbstractString[]
                for arg_line in readlines(args_file)
                    push!(arg_strings, rstrip(arg_line, '\n'))
                end
                arg_strings = read_args_from_files(arg_strings, prefixes)
                append!(new_arg_strings, arg_strings)
            end
        end
    end

    # return the modified argument list
    return new_arg_strings
end

# preprocess args, then parse as usual
ARGS = read_args_from_files(ARGS, ['@'])
args = parse_args(ARGS, s)

对不起,我的意思是
args=ArgParse.parse_args(args,arg_parse_设置)
我们可以向带有参数的文件添加注释字符吗?例如,arg文件中以
#
开头的所有行都应忽略。可能应该有一个选项来设置注释字符(
#
),在某一点上,最好使用现有的文件格式,如YAML,它支持注释、列表和更强大的功能。