我有一个配置文件,用户可以在其中指定一组shell命令。 命令基本上是一系列以管道分隔的shell命令。
CMD1 = grep "SomeOtherString" | grep "XX" | cut -d":" -f9 | cut -d"," -f1
CMD2 = grep "SomeOtherString" | tail -1| cut -d":" -f9 | cut -d"," -f1 | cut -d"[" -f2 | cut -d"]" -f1
我能够阅读Python脚本中的命令。我的问题是如何在Python中运行这些读取命令字符串并获得输出。
任何包含subprocess
,plumbum
,sh
的解决方案都是可以接受的。
答案 0 :(得分:2)
stdout_fh = io.StringIO()
stderr_fh = io.StringIO()
with redirect_stderr(stderr_fh):
with redirect_stdout(stdout_fh):
subprocess.run(command, shell=True)
stderr = stderr_fh.getvalue()
stdout = stderr_fh.getvalue()
需要注意的是,与其他子进程命令不同,如果返回非零错误代码,则会引发subprocess.CalledProcessError。
你不应该这样做,但是如果它对那里的某个人派上用场,我确实遇到过一次由于某种原因导致上述解决方案不起作用的体验,所以相反,我做了以下
<img />