从 perl/python/ruby 调用脚本并检索输出

从 perl/python/ruby 调用脚本并检索输出

我继承了一个 tcsh“主”脚本,该脚本可以使用通过管道传输到“grep”的“zcat”和其他一些命令/脚本来工作并从包含数据的文件中提取行。提取的行包含数字。对 tcsh 脚本中的数字进行计算变得越来越困难,因此我正在寻找一种重用工作命令grep和其他命令的替代方法。

我可以轻松地用 C 进行计算。在不创建大量中间文件的情况下获取程序中的数字是一项挑战,就像将一个命令的输出通过管道传输到另一个命令一样。

如何将“主”脚本转换为 perl 、 ruby​​ 或 python 脚本?我并没有真正发现 perl 和 ruby​​ 中的示例比原始 tcsh 脚本更具可读性。在 python 中, os.system 调用不会返回内容,只是返回退出状态,这与使用 C 时遇到的问题相同。

有没有比在 python 中使用 os.system 从程序、脚本或程序组合中获取信息更好的方法?或者我应该仔细看看 perl 或 ruby​​?

答案1

在 Python 中使用os.system()调用命令来获取输出并不是正确的方法。对于单个命令,您可以使用check_output()subprocess 模块中的函数。

在你的情况下我会看看它允许你在 python 中做一些事情,比如:

from plumbum.cmd import zcat, grep
chain = zcat["your_file_name.gz"] | grep["-i", "pattern"]
result = chain()

result然后从变量(字符串)中获取所需的数字。

您需要plumbum使用pip或安装easy_install

相关内容