在Shell命令中打印变量

时间:2016-09-20 18:47:07

标签: python shell arguments subprocess

我想从推文的json objcet中提取文本字段,然后通过syntaxnet运行它。我正在用Python做这一切。

我的代码是:

import os, sys
import subprocess
import json

def parse(text):
    os.chdir("/var/www/html/alenza/hdfs/user/alenza/sree_account/sree_project/src/core/data_analysis/syntaxnet/models/syntaxnet")
    #synnet_output = subprocess.check_output()
    subprocess.call(["echo 'hello world' | syntaxet/demo.sh"], shell = True)
    #print synnet_output


for line in sys.stdin:
    line1 = json.loads(line)
    text = line1['avl_lexicon_text']
    print text
    synnet_output = parse(text)

现在,我想在echo 'hello world'函数中回复parse而不是text。我希望将text变量提供给syntaxnet/demo.sh文件。我尝试了subprocess.call(["echo text | syntaxet/demo.sh"], shell = True)但是没有用。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您可以使用字符串格式化程序%s并替换文本

def parse(text):
    os.chdir("/var/www/html/alenza/hdfs/user/alenza/sree_account/sree_project/src/core/data_analysis/syntaxnet/models/syntaxnet")
    #synnet_output = subprocess.check_output()
    subprocess.call(["echo '%s' | syntaxet/demo.sh"%text], shell = True)
    #print synnet_output

如果您怀疑自己的文字可能只有单引号,那么您可以将其删除:

text = text.replace("'", "\\'")