如何在的输出中查找字符串子流程.Popen.commi

2024-06-26 17:37:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在的输出中查找字符串过程通信为子流程.Popen. 我的代码如下:

    proc = subprocess.Popen(["./runCommand.sh" +  " -i " + ip + " -c " + cmd], stdout=subprocess.PIPE, shell=True)
    output = proc.communicate()
    p_status = proc.wait()
    if 'someword' in output:
        #dosomething

似乎在输出中找不到我要查找的单词。 打印时输出如下所示:

(b'blabla someword\blabla\n', None)

我需要转换这个才能找到带“in”的东西吗?在


编辑: 谢谢你的回答! 我把它改成了“output[0],但还是得到了一个错误 TypeError: a bytes-like object is required, not 'str' 我能在这里做什么?使用decode()?在


Tags: 字符串代码inipcmdoutput过程sh
2条回答

您得到的是一个双元素元组,如果您访问元组的第一个元素,则可以使用in

>>> 'someword' in (b'blabla someword\blabla\n', None)[0]
True

因此,您需要将output替换为output[0],以使您的代码正常工作。在

您正在将stdout+stderr都放入output,因此需要检查if 'someword' in output[0]

或者更好:

proc = subprocess.Popen(["./runCommand.sh" +  " -i " + ip + " -c " + cmd], stdout=subprocess.PIPE, shell=True)
output, _ = proc.communicate() # or output, err = proc.communicate()
p_status = proc.wait()
if 'someword' in output:
    #dosomething

总是检查文件:

^{pr2}$

相关问题 更多 >