2

因此,我通常在 Bash 脚本中使用的 bash 命令类似于:

$ cat huge2GBfile.txt | grep -w "pattern1/|pattern2/|pattern3" > out.txt

它将在huge2GBfile 中输出找到pattern1、2、3 的行。我想知道这是否可以通过python实现。我知道我可以使用

os.system(cmd) 

但我想知道 Python 中是否有类似的东西(我是一个完全的菜鸟),以及它是否比使用 cat+grep 更快。谢谢!

最初的想法,会像

for line in f:
     if pattern in line:
          out.write(line)

更快?

4

1 回答 1

4

即使使用的算法比 grep 使用的逻辑更好(正如有人已经评论他们已经高度优化,grep 已经 30 年了!),仍然存在这样一个事实,即它们是用 C 编写的实用程序,并为系统本机编译。

Python 是一种解释性语言,它可能比原生 C 慢几个数量级,所以我认为答案是否定的,python 中没有什么比它更快的了。

如果您想逐行处理 grep 命令行的输出,一个选项是构建类似于 unix 命令行工具的 python 脚本,以便它可以从标准输入读取并写入标准输出,因此您可以使用类似:

grep pattern file | python myscript.py

你如何在 Python 中读取标准输入?

于 2013-10-05T23:15:44.750 回答