我正在使用subprocess
模块来执行我的C程序,最后,我想同时获取返回代码和该程序返回的输出。我尝试过:
result = subprocess.check_output(['src/main', '-n {0}'.format(n)], universal_newlines=True)
上面捕获了程序的输出,仅当返回码为非零时,它才会引发错误。关键是我不想在非零错误代码上引发错误,而是想在if
语句中使用它,并且如果返回码非零,我想重新运行过程。
现在,如果我将其更改为run
,并调用为:
result = subprocess.run(['src/main', '-n {0}'.format(n)])
然后,我可以执行result.returncode
来获取返回码,但是当我执行result.stdout
时,它会显示None
。有没有办法同时获得返回码和实际输出?
答案 0 :(得分:2)
为了使用import { connect } from 'react-redux';
import Header from './Header.js'
const mapDispatchToProps = dispatch => ({
onBack: () => dispatch({ type: 'BACK_BUTTON_CLICKED' })
})
export default connect(null, mapDispatchToProps)(Header);
捕获输出,您需要传递subprocess.run()
。如果您还想捕获stderr,请同时传递stdout=subprocess.PIPE
(或stderr=subprocess.PIPE
以使stderr与stderr=subprocess.STDOUT
属性中的stdout合并)。例如:
result.stdout
或者,如果您使用的是Python 3.7或更高版本:
result = subprocess.run(['src/main', '-n {0}'.format(n)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
您可能还希望将result = subprocess.run(['src/main', '-n {0}'.format(n)], capture_output=True)
设置为以stdout作为字符串而不是字节。