我非常喜欢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执行此操作?以及如何使用子流程来获取返回的内容而不是打印什么
答案 0 :(得分:0)
您无法通过类似函数调用的管道返回数据。您必须使用许多IPC机制之一,如管道,共享内存,消息传递或套接字。管道通常是最简单的,这就是你在这里所做的。但是,您可以通过管道发送二进制数据。假设它可以腌制,你可以尝试腌制你的数据。