我正在从 python 编译一个要在 unix 系统上执行的命令,其中包含多个管道步骤。例如:
grep foo myfile | cmd1 | cmd2 > output
foo
这些对应于对其中包含 from的条目进行的一系列转换myfile
。我有时将它构建为由模块执行的命令os.system
,在其他情况下使用subprocess
模块执行。
如何从 Python 对管道的每个部分进行错误检查?例如,在 99% 的情况下,有foo
入口myfile
和剩余的管道工程。但是如果由于某种原因myfile
存在但不包含foo
条目,那么管道的其余部分会中断,因为您正在管道传输空文件,并且其余命令需要非空输入才能工作。这使得调试变得困难,因为您所看到的只是损坏管道的输出,不知道哪个中间步骤失败了。
有没有办法在 Python 中构造管道来检查中间步骤的错误?例如检查grep
管道的部分是否真的包含一些输出,cmd1
输入上的输出是否grep
也包含一些输出,等等?谢谢。