我正在尝试使用grep解析Python中的文件,但它始终停在同一行,我可以理解为什么。我尝试了三种不同的方式:
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的内存问题,我怎么能解决这个问题呢? 非常感谢!
答案 0 :(得分:2)
您需要引用命令行参数,因为它们之间有空格:
"grep -A1 '"+name+" "+new_hairpins+"' | grep ....
^ ^
否则,name
,new_hairpins
将被视为单独的参数。
答案 1 :(得分:0)
我终于找到了问题:我的错!
我意识到我在grep中使用的文件new_hairpins以及之前在代码中生成的文件并没有被.close()....
关闭。由于它正在研究1879年的第一行,我并不认为问题可能来自这个文件...
无论如何,谢谢你的帮助!