gpt4 book ai didi

Julia:无法通过字符串变量运行带参数的命令

转载 作者:行者123 更新时间:2023-12-04 11:38:01 24 4
gpt4 key购买 nike

我正在尝试使用 run() 或 success() 从 Julia 执行 Python 脚本。

如果我手动指定命令,我可以正常运行它:

julia> run(`python sample.py`)
woo! sample

但是,如果我尝试通过字符串参数运行它,它突然不起作用。
julia> str = "python sample.py"
"python sample.py"

julia> run( `$str` )
ERROR: could not spawn `'python sample.py'`: no such file or directory (ENOENT)
in _jl_spawn at process.jl:217
in spawn at process.jl:348
in spawn at process.jl:389
in run at process.jl:478

为 sample.py 指定完整路径会产生相同的结果。
奇怪的是,将 python 作为字符串运行确实有效:
julia> str = "python"
"python"

julia> run( `$str` )
Python 2.7.3 (default, Feb 27 2014, 19:58:35)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

我做错了什么吗?

谢谢

最佳答案

这是由于 specialized command interpolation .它将每个内插部分视为命令的一个独立部分。虽然有时有点不直观,但它可以让您完全忘记引用、空格等的所有困难。

当您run(`$str`) ,正在治疗 str作为整个命令名称,这就是为什么它提示找不到名称为 "python sample.py" 的可执行文件的原因。 .如果你想用参数“sample.py”运行“python”,你需要两个插值:

cmd = "python"
arg = "sample.py"
run(`$cmd $arg`)

这允许你的参数有一个空格,它仍然会被视为第一个参数。

如果你真的想使用像 "python sample.py" 这样的字符串,您可以在其空白处拆分它:
str = "python sample.py"
run(`$(split(str))`) # strongly unadvised

但请注意,这对参数名称来说非常脆弱。如果您想运行名为“My Documents/sample.py”的文件,这将中断,而第一个插值将正常工作。

关于Julia:无法通过字符串变量运行带参数的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24682182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com