ksk*_*skp 6 python shell arguments
我写了一个小shell脚本,看起来像这样:
cd models/syntaxnet
var1=$(jq --raw-output '.["avl_text"]' | syntaxnet/demo.sh)
echo $var1
python /home/sree/python_code1.py $var1
Run Code Online (Sandbox Code Playgroud)
我python_code1.py看起来像这样:
import sys
data = sys.argv[1]
print "In python code"
print data
print type(data)
Run Code Online (Sandbox Code Playgroud)
现在,我的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 _ _
但是print datapython代码中的输出只是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 ~]#
Run Code Online (Sandbox Code Playgroud)
因此,在shell脚本中,将$ var1放在引号中.
shell脚本的内容(a.sh):
var1="Dinesh Pundkar"
python dsp.py "$var1"
Run Code Online (Sandbox Code Playgroud)
python代码的内容(dsp.py):
import sys
data = sys.argv[1]
print "In python code"
print data
Run Code Online (Sandbox Code Playgroud)
输出:
[root@dsp-centos ~]# sh a.sh
In python code
Dinesh Pundkar
Run Code Online (Sandbox Code Playgroud)
使用连接和列表切片
import sys
data = ' '.join(sys.argv[1:])
print "In python code"
print data
print type(data)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16585 次 |
| 最近记录: |