gpt4 book ai didi

python - 从 bash 将多个参数传递给 python 函数(在变量中)

转载 作者:行者123 更新时间:2023-12-02 01:43:18 31 4
gpt4 key购买 nike

我编写了一个名为 plot_ts_ex 的 Python 函数,它接受两个参数 ts_fileex_file (该函数的文件名是 pism_plot_routine )。我想从终端的 bash 脚本运行这个函数。当我不在 bash 脚本中使用变量时,直接传递函数参数(在本例中为 ts_file = ts_g10km_10ka_hy.ncex_file = ex_g10km_10ka_hy.nc),如下所示:

#!/bin/sh
python -c 'import pism_plot_routine; pism_plot_routine.plot_ts_ex("ts_g10km_10ka_hy.nc", "ex_g10km_10ka_hy.nc")'

Run function from the command line 类似,有效。

但是当我为输入参数定义变量时,它不起作用:

#!/bin/sh 
ts_name="ts_g10km_10ka_hy.nc"
ex_name="ex_g10km_10ka_hy.nc"
python -c 'import pism_plot_routine; pism_plot_routine.plot_ts_ex("$ts_name", "$ex_name")'

它给出了错误:

FileNotFoundError: [Errno 2] No such file or directory: b'$ts_name'

然后我发现了类似的问题passing an argument to a python function from bash对于只有一个参数的 python 函数,我尝试过

#!/bin/sh
python -c 'import sys, pism_plot_routine; pism_plot_routine.plot_ts_ex(sys.argv[1])' "$ts_name" "$ex_name"

但这不起作用。

那么如何使用变量在 bash 脚本中为 python 函数传递 2 个参数?

最佳答案

当您使用单引号时,变量不会被扩展,您应该使用双引号:

#!/bin/sh 
ts_name="ts_g10km_10ka_hy.nc"
ex_name="ex_g10km_10ka_hy.nc"
python -c "import pism_plot_routine; pism_plot_routine.plot_ts_ex('$ts_name', '$ex_name')"

您还可以使用sys.argv,参数存储在列表中,因此ts_namesys.arv[1]ex_namesys.argv[2]:

#!/bin/sh 
ts_name="ts_g10km_10ka_hy.nc"
ex_name="ex_g10km_10ka_hy.nc"
python -c 'import sys, pism_plot_routine; pism_plot_routine.plot_ts_ex(sys.argv[1], sys.argv[2])' "$ts_name" "$ex_name"

关于python - 从 bash 将多个参数传递给 python 函数(在变量中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71266145/

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