处理subprocess.check_output返回引号

时间:2017-03-31 15:02:34

标签: python subprocess

我有一个子流程,它包含一种验证凭证并返回如下响应的方法:

{
"isvalid" : false
}

我使用它来获取响应并检查凭证是否通过了测试:

def slraddresstest():
        while True:
                solarcoin_address = raw_input ("What is your SolarCoin Address: ")
                output = subprocess.check_output(['solarcoind', 'validateaddress', solarcoin_address], shell=False)
                if output != "{\"isvalid\" : false}"
                        return solarcoin_address
                else:
                        print ("Error: SolarCoin address invlaid, check and try again")

但是在运行代码时我得到了:

if output != "{\"isvalid\" : false}"
                                   ^
SyntaxError: invalid syntax

我还尝试了if output != '{"isvalid" : false}'if output != """{"isvalid" : false}""",但我遇到了类似的语法错误。

2 个答案:

答案 0 :(得分:1)

哟忘了:

if output != "{\"isvalid\" : false}":

答案 1 :(得分:0)

您可能已经发现了,但我仍在供参考:

solarcoind正在重现json。因此,以下修改有效(在python 3中):

output = subprocess.check_output(['solarcoind','validateaddress',solarcoin_address], shell = False).decode("utf-8")
if( json.loads(output)['isvalid'] != False):

在python> = 3.6中,可能不需要.decode(“ utf-8”)。