Python 格雷普突然停了下来

Python 格雷普突然停了下来,python,grep,subprocess,popen,Python,Grep,Subprocess,Popen,我试图用Python解析一个文件,使用grep,但它总是停在同一行,我能够理解为什么。我尝试了三种不同的方法: process = os.popen("grep -A1 "+name+" "+new_hairpins+" | grep -oE '.{0,6}"+seq+".{0,6}'") results = process.readlines() process.close() 然后 通过一个临时文件 os.system("grep -A1 "+name+" "+new_hairpins+"

我试图用Python解析一个文件,使用grep,但它总是停在同一行,我能够理解为什么。我尝试了三种不同的方法:

process = os.popen("grep -A1 "+name+" "+new_hairpins+" | grep -oE '.{0,6}"+seq+".{0,6}'")
results = process.readlines()
process.close()
然后

通过一个临时文件

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 -A1 '"+name+" "+new_hairpins+"' | grep ....
          ^                         ^

否则,
name
new\u hairpins
将被视为单独的参数。

我终于找到了问题:我的错

我意识到我在grep中使用的文件new_hairpins和我在代码中生成的文件new_hairpins不是用.close()关闭的

由于它正在处理1879年的第一行,我认为问题不可能来自这个文件


无论如何,谢谢你们的帮助

为什么要调用
grep
作为子流程?Python完全能够在不使用外部进程的情况下将文件中的行与正则表达式进行比较。您是否考虑过用Python解析文件,而不是调用外部工具来为您完成这项工作?我这样做是因为使用2行grep比编写行代码来完成同样的工作要快。而且,grep仍然是最优的,所以我重做同样的事情?当然,如果我的问题没有解决方案,我将不得不使用python…new_hairpins是要搜索的文件,name是要搜索的术语,所以我不认为引号是解决方案。。。此外,它在1879年的第一行运行得很好,停在1880号….@spacup,你能用你得到的完整回溯更新这个问题吗?我没有任何回溯。。。只是results变量是空的。但是我重复一下:当我在bash的1880行和下面的行上使用完全相同的命令时,它是有效的!我只是意识到在我的tmp.txt文件中,有时有些行只包含两个破折号——我不知道它们为什么会出现。。。也许这就是问题的根源?
"grep -A1 '"+name+" "+new_hairpins+"' | grep ....
          ^                         ^