如何将“命令模块”转换为“子进程模块”?

2024-05-18 12:24:16 发布

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

我想知道如何使用“subprocess module”重写以下代码:

import commands
print commands.getoutput('convert -quality 100 ___t*.png images/transient_heat.gif')
print commands.getoutput('rm ___t*.png')

因为“commands module”不支持python3,所以我想使用“subprocessmodule”。我尝试了以下代码,但它不起作用。在

^{pr2}$

非常感谢!这段代码最初来自Kitchin的博客:http://kitchingroup.cheme.cmu.edu/blog/2013/03/07/Transient-heat-conduction-partial-differential-equations/


Tags: rm代码importconvertpnggifcommandsmodule
2条回答

您可以使用^{}

print subprocess.check_output('rm ___t*.png', shell=True)

subprocess需要组成命令的字符串列表。您可以手动拆分命令,如下所示:

import subprocess
print(subprocess.Popen(['convert', '-quality', '100', '___t*.png', 'images/transient_heat.gif']))
print (subprocess.Popen(['rm', '___t*.png']))

或者,您可以让shlex.split()为您完成工作:

^{pr2}$

编辑

下面的代码将显示stdout和{}在执行时的输出,这可能有助于您修复命令行中的任何错误。在

import shlex
import subprocess

convert_proc = subprocess.Popen(shlex.split('convert -quality 100 ___t*.png images/transient_heat.gif'), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
outs, errs = convert_proc.communicate()
print('STDOUT: {}'.format(outs))
print('STDERR: {}'.format(errs))

subprocess.Popen(shlex.split('convert -quality 100 ___t*.png images/transient_heat.gif'))
print (subprocess.Popen(shlex.split('rm ___t*.png')))

相关问题 更多 >

    热门问题