我写了一个python脚本,使用subprocess.Popen
来调用命令行工具look
来对文件进行二进制搜索。
p = subprocess.Popen('look -b "abc" testfile.txt',executable='/bin/bash', stdout=subprocess.PIPE, stderr=STDOUT, shell=True)
out, err = p.communicate()
result = out.decode()
print(result)
这段代码的作用是调用系统命令看起来对字符串testfile.txt
执行名为abc
的文件的二进制搜索。
如果你只有这段代码就行了。
但是,当您的内存加载了一些大文件时,它会变得非常慢。
例如,如果你这样做:
a = read_a_large_file() #Like GBs of data
p = subprocess.Popen('look -b "abc" testfile.txt',executable='/bin/bash', stdout=subprocess.PIPE, stderr=STDOUT, shell=True)
out, err = p.communicate()
result = out.decode()
print(result)
a[0]
子进程部分需要很长时间才能执行。在shell中运行look命令非常快,因为它对已排序的文件执行二进制搜索。
任何帮助将不胜感激!谢谢!