Julia中如何通过传入文本文件读取大量命令行参数?
Julia读取文件作为命令行参数的解决方法
核心问题说明
直接调用read(ARGS)无效的原因是:ARGS是存储命令行输入的字符串数组(此时仅包含"inputs.txt"),而read函数需要接收文件名字符串、IO流等合法输入,不能直接传入数组。
常见场景的实现方案
1. 参数按行存储在文件中
如果inputs.txt内每个参数单独占一行:
foo bar baz
代码实现:
# 获取文件名 input_file = ARGS[1] # 读取所有行并过滤空行(避免无效参数) params = filter(!isempty, readlines(input_file)) # 后续使用方式和原ARGS一致 println(params[1]) # 输出foo println(params[2]) # 输出bar
2. 参数用空白字符(空格/换行/制表符)分隔
如果inputs.txt内参数以任意空白字符分隔:
foo bar baz qux
代码实现:
input_file = ARGS[1] # 读取文件全部内容,按空白字符分割成参数列表 params = split(read(input_file, String)) # params结果为["foo", "bar", "baz", "qux"]
3. 参数包含空格(需引号包裹)
如果参数本身带空格(比如"hello world"),可以用shell_split解析:
using Base.Shell input_file = ARGS[1] content = read(input_file, String) # 按shell规则解析带引号的参数 params = shell_split(content) # 若inputs.txt内容为`foo "hello world" baz`,params会是["foo", "hello world", "baz"]
内容的提问来源于stack exchange,提问作者Julia Roberts
相关产品推荐
相关产品推荐

