subprocess.run()
function只存在于Python 3.5及更新版本中。
,这很容易然而,反向移植:
def run(*popenargs, input=None, check=False, **kwargs):
if input is not None:
if 'stdin' in kwargs:
raise ValueError('stdin and input arguments may not both be used.')
kwargs['stdin'] = subprocess.PIPE
process = subprocess.Popen(*popenargs, **kwargs):
try:
stdout, stderr = process.communicate(input)
except:
process.kill()
process.wait()
raise
retcode = process.poll()
if check and retcode:
raise subprocess.CalledProcessError(
retcode, process.args, output=stdout, stderr=stderr)
return retcode, stdout, stderr
没有为超时的支持,并为完成过程信息没有自定义类,所以我只能返回retcode
,stdout
和stderr
信息。否则它会和原来的一样。
'subprocess'不应该(并且不......)有一个叫做'run'的方法。 – DeepSpace
@DeepSpace它在Python 3中执行https://docs.python.org/3/library/subprocess.html#subprocess.run,但不幸的是,他们正在使用Python 2 –
@MosesKoledoye嗯,这个问题是用'python 2.7 ';) – DeepSpace