首页 > 解决方案 > python等价于head/grep/tail

问题描述

我正在尝试学习python,因此尝试将这三个bash脚本行转换为python方式(我猜可能变成一个类?)。我想获取这些命令的 3 个输出并将它们全部放入 3 个变量中以放入 mysql 数据库中,而不是将结果放入 txt 文件中并稍后阅读:

head -n 14 /usr/src/project/logs/some.log > tacos.txt
grep 'name' /usr/src/project/logs/some.log | grep -v 'result=""' | grep -v 'result="is\ OK"' >> tacos.txt
tail -n 5 /usr/src/project/logs/some.log >> tacos.txt

我有 mysql 连接器在 python 中工作,以便稍后将变量放入数据库,但我不知道如何将 head/grep/tail 部分“unbash”到 python 中。我不太明白是否有python等价物。

标签: python

解决方案


正如 UNIX 开发人员所做的那样,您需要编写支持函数。 head并且tail是可执行程序,而不是原子系统命令。 grep更复杂的是系统正则表达式工具。

查找regexPython(或几乎任何高级语言)所需的内容。对于headand tail,您需要编写简单的函数来读取文件或输入流……就像 UNIX 在底层代码中所做的那样。这些不是通用语言的内置命令。

请记住,您正在切换范例。Shell 编程专门针对 OS 的中心目的:管理系统资源。当您将这些东西翻译成通用语言时,您将获得许多通用功能,但会失去许多用于直接操作 OS 对象的强大例程。

还要查看 Python 的模块ossystem;您可能会发现从 Python 中简单地调用操作系统是最有效的:

taco_str = os.system("head -n 14 ...")
taco_str += os.system("grep ...")
taco_str += os.system("tail -n 5 ...")

并写入taco_str所需的文件。


推荐阅读