我继承了一个 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