gpt4 book ai didi

python - 从 Shell 脚本向 Python 传递参数

转载 作者:太空狗 更新时间:2023-10-30 02:02:41 24 4
gpt4 key购买 nike

我写了一个小的 shell 脚本,看起来像这样:

cd models/syntaxnet
var1=$(jq --raw-output '.["avl_text"]' | syntaxnet/demo.sh)
echo $var1
python /home/sree/python_code1.py $var1

我的 python_code1.py 看起来像这样:

import sys

data = sys.argv[1]
print "In python code"
print data
print type(data)

现在,我的 shell 脚本中 echo $var1 的输出正是我想要看到的:

1 Check _ VERB VB _​​ 0 ROOT _ _ 2 out _ PRT RP _ 1 prt _ _ 3 this _ DET DT _ 4 det _ _ 4 video _ NOUN NN _ 1 dobj _ _ 5 about _ ADP IN _ 4 prep _ _ 6 Northwest _ NOUN NNP _ 7 nn _ _ 7 Arkansas _ NOUN NNP _ 5 pobj _ _ 8 - _ . , _ 7 punct _ _ 9 https _ X ADD _ 7 appos _ _

但是在python代码中print data的输出只是1。即参数的第一个字母。

为什么会这样?我想将整个字符串传递给 python 代码。

最佳答案

如果参数之间有空格且参数不在引号中,则 python 将其视为两个不同的参数。

这就是为什么在python代码中打印数据的输出只是1。

检查以下输出。

[root@dsp-centos ~]# python dsp.py Dinesh Pundkar
In python code
Dinesh
[root@dsp-centos ~]# python dsp.py "Dinesh Pundkar"
In python code
Dinesh Pundkar
[root@dsp-centos ~]#

因此,在您的 shell 脚本中,将 $var1 放在引号中。

shell脚本(a.sh)的内容:

var1="Dinesh Pundkar"
python dsp.py "$var1"

python代码(dsp.py)内容:

import sys
data = sys.argv[1]
print "In python code"
print data

输出:

[root@dsp-centos ~]# sh a.sh
In python code
Dinesh Pundkar

关于python - 从 Shell 脚本向 Python 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39498702/

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