python subprocess.popen只读返回的内容

时间:2016-03-16 04:06:55

标签: python

我非常喜欢python。需要了解有关subprocess.popen的更多信息。

我有一个执行另一个python脚本的脚本。下面是我的脚本将尝试执行另一个脚本的部分。

cmd = ['python %s %s %s %s %s'%(runscript, steps, part_number, serial_number, self.operation)]
p = subprocess.Popen(cmd, shell = True, stdout=subprocess.PIPE)
p.wait()
result = p.stdout.readline()

问题是,执行的脚本,我必须打印出结果才能通过“result = p.stdout.readline()”读取结果。下面是执行的脚本

def Main():

if sys.argv[1] == "Initiate" :
    doFunc = Functions_obj.Initiate()
    if doFunc != 0 :
        print doFunc
    else :
        print "Initiate PASS"

elif sys.argv[1] == "Check" :
    getDrive = Functions_obj.initialize()
    if getDrive == "NoDevice" :
        print getDrive
        sys.exit()

    doFunc = Functions_obj.Identify_Drive()
    if doFunc != 0 :
        print doFunc
    else :
        print "Check PASS"

我的问题是,我想从返回执行的脚本中“返回”结果而不是打印。我如何使用subprocess.popen执行此操作?以及如何使用子流程来获取返回的内容而不是打印什么

1 个答案:

答案 0 :(得分:0)

您无法通过类似函数调用的管道返回数据。您必须使用许多IPC机制之一,如管道,共享内存,消息传递或套接字。管道通常是最简单的,这就是你在这里所做的。但是,您可以通过管道发送二进制数据。假设它可以腌制,你可以尝试腌制你的数据。