我试图用Python解析一个文件,使用grep,但它总是停在同一行,我启用了解为什么。我尝试三种不同的方式:Grep突然停止
process = os.popen("grep -A1 "+name+" "+new_hairpins+" | grep -oE '.{0,6}"+seq+".{0,6}'")
results = process.readlines()
process.close()
然后
process = subprocess.Popen("grep -A1 "+name+" "+new_hairpins+" | grep -oE '.{0,6}"+seq+".{0,6}'",stdout=PIPE, stderr=PIPE, shell=True)
process.wait()
process_result = process.communicate()
results = filter(None, process_result[0].split("\n"))
,并通过一个临时文件
os.system("grep -A1 "+name+" "+new_hairpins+" | grep -oE '.{0,6}"+seq+".{0,6}' > tmp.txt")
with open("tmp.txt","r") as f :
results = f.readlines()
但脚本总是在相同的线路出现故障。 我手动直接在bash中尝试这一行,它工作....!
所以它可能是从grep的内存问题,我该如何解决这个问题? 非常感谢!
你为什么要调用'grep'作为子进程? Python完全有能力将文件中的行与正则表达式进行比较,而无需使用外部进程。 – geoffspear 2014-10-01 15:39:40
您是否考虑过使用python解析文件,而不是调用外部工具来为您完成这项工作? – 2014-10-01 15:39:42
我这样做是因为使用2 grep比写代码行来做同样的事情更快。更重要的是,grep还不是最优的,所以我重做同样的东西?当然,如果没有解决我的问题,我将不得不在python ... – spacup 2014-10-02 07:05:45