我在这里搜索了 grep 答案,但找不到答案。他们似乎都在文件中搜索字符串,而不是文件中的字符串列表。我已经有一个可以工作的搜索功能,但是 grep 做得更快。我在文件 sn.txt 中有一个字符串列表(每行一个字符串,没有分隔符)。我想在另一个文件 (Merge_EXP.exp) 中搜索匹配的行并将其写入新文件。我正在搜索的文件有 50 万行,因此在没有 grep 的情况下在那里搜索几千行需要几个小时。
当我在 Windows 中从命令提示符运行它时,它会在几分钟内完成:
grep --file=sn.txt Merge_EXP.exp > Merge_EXP_Out.exp
如何从 Python 调用相同的过程?我真的不想要 Python 中的替代品,因为我已经有了一个可以使用但需要一段时间的替代品。除非你认为你可以显着提高性能:
def match_SN(serialnumb, Exp_Merge, output_exp):
fout = open(output_exp,'a')
f = open(Exp_Merge,'r')
# skip first line
f.readline()
for record in f:
record = record.strip().rstrip('\n')
if serialnumb in record:
fout.write (record + '\n')
f.close()
fout.close()
def main(Output_CSV, Exp_Merge, updated_exp):
# create a blank output
fout = open(updated_exp,'w')
# copy header records
f = open(Exp_Merge,'r')
header1 = f.readline()
fout.write(header1)
header2 = f.readline()
fout.write(header2)
fout.close()
f.close()
f_csv = open(Output_CSV,'r')
f_csv.readline()
for rec in f_csv:
rec_list = rec.split(",")
sn = rec_list[2]
sn = sn.strip().rstrip('\n')
match_SN(sn,Exp_Merge,updated_exp)