Python popen shell 命令等到子进程完成
Python popen shell command wait till subprocess has finished
我知道这个问题已经在这里回答过 Python popen command. Wait until the command is finished
但问题是我不明白答案以及如何将它应用到我的代码中所以请不要在没有一点帮助的情况下将这个问题标记为之前被问过的问题:)
我有一个接收 shell 命令并执行它和 returns 变量输出的函数。
它工作正常,除了我不希望控制流继续直到该过程完全完成。这样做的原因是我正在使用 imagemagick 命令行工具创建图像,当我尝试访问它们以获取信息时不久之后它们是不完整的。这是我的代码..
def send_to_imagemagick(self, shell_command):
try:
# log.info('Shell command = {0}'.format(shell_command))
description=os.popen(shell_command)
# log.info('description = {0}'.format(description))
except Exception as e:
log.info('Error with Img cmd tool {0}'.format(e))
while True:
line = description.readline()
if not line: break
return line
非常感谢@Ruben 这就是我用来完成它的方法,所以它 returns 输出正确。
def send_to_imagemagick(self, shell_command):
args = shell_command.split(' ')
try:
description=Popen(args, stdout=subprocess.PIPE)
out, err = description.communicate()
return out
except Exception as e:
log.info('Error with Img cmd tool {0}'.format(e))
使用subprocess.popen
:
This module intends to replace several older modules and functions.
所以在你的情况下 import subprocess
然后使用 popen.communicate()
等待命令完成。
有关这方面的文档,请参阅:here
所以:
from subprocess import Popen
def send_to_imagemagick(self, shell_command):
try:
# log.info('Shell command = {0}'.format(shell_command))
description=Popen(shell_command)
description.communicate()
# log.info('description = {0}'.format(description))
except Exception as e:
log.info('Error with Img cmd tool {0}'.format(e))
while True:
line = description.readline()
if not line: break
return line
我知道这个问题已经在这里回答过 Python popen command. Wait until the command is finished 但问题是我不明白答案以及如何将它应用到我的代码中所以请不要在没有一点帮助的情况下将这个问题标记为之前被问过的问题:)
我有一个接收 shell 命令并执行它和 returns 变量输出的函数。
它工作正常,除了我不希望控制流继续直到该过程完全完成。这样做的原因是我正在使用 imagemagick 命令行工具创建图像,当我尝试访问它们以获取信息时不久之后它们是不完整的。这是我的代码..
def send_to_imagemagick(self, shell_command):
try:
# log.info('Shell command = {0}'.format(shell_command))
description=os.popen(shell_command)
# log.info('description = {0}'.format(description))
except Exception as e:
log.info('Error with Img cmd tool {0}'.format(e))
while True:
line = description.readline()
if not line: break
return line
非常感谢@Ruben 这就是我用来完成它的方法,所以它 returns 输出正确。
def send_to_imagemagick(self, shell_command):
args = shell_command.split(' ')
try:
description=Popen(args, stdout=subprocess.PIPE)
out, err = description.communicate()
return out
except Exception as e:
log.info('Error with Img cmd tool {0}'.format(e))
使用subprocess.popen
:
This module intends to replace several older modules and functions.
所以在你的情况下 import subprocess
然后使用 popen.communicate()
等待命令完成。
有关这方面的文档,请参阅:here
所以:
from subprocess import Popen
def send_to_imagemagick(self, shell_command):
try:
# log.info('Shell command = {0}'.format(shell_command))
description=Popen(shell_command)
description.communicate()
# log.info('description = {0}'.format(description))
except Exception as e:
log.info('Error with Img cmd tool {0}'.format(e))
while True:
line = description.readline()
if not line: break
return line