python - 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等价物。
解决方案
正如 UNIX 开发人员所做的那样,您需要编写支持函数。 head
并且tail
是可执行程序,而不是原子系统命令。 grep
更复杂的是系统正则表达式工具。
查找regex
Python(或几乎任何高级语言)所需的内容。对于head
and tail
,您需要编写简单的函数来读取文件或输入流……就像 UNIX 在底层代码中所做的那样。这些不是通用语言的内置命令。
请记住,您正在切换范例。Shell 编程专门针对 OS 的中心目的:管理系统资源。当您将这些东西翻译成通用语言时,您将获得许多通用功能,但会失去许多用于直接操作 OS 对象的强大例程。
还要查看 Python 的模块os和system;您可能会发现从 Python 中简单地调用操作系统是最有效的:
taco_str = os.system("head -n 14 ...")
taco_str += os.system("grep ...")
taco_str += os.system("tail -n 5 ...")
并写入taco_str
所需的文件。
推荐阅读
- java - 在 GridPane FXML JavaFX 上添加动态按钮
- reactjs - 如何在当前状态下调用一次函数
- java - Fragment recyclerview 点击打开另一个片段
- java - AppEngine 应用程序:Cloud Profiler 中 CPU 时间和 Wall time 之间的巨大差异
- python - TypeError: an integer is required when using Cython
- c - 用 ? 解释 C 表达式 : 和 >
- reactjs - Pnp Js 与 Sharepoint spfx ListItemPicker
- python - 姜戈 | 从每件商品的价格和金额生成总价?
- r - 如何根据 R 中另一列的权重重新调整列?
- java - 如何使用 JLabels 在 JFrame 中显示矩阵