格雷普突然停了下来

2024-09-30 06:26:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python解析一个文件,使用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的内存问题吗?我该如何解决这个问题呢? 谢谢!你知道吗


Tags: nametxtnewosa1resultprocessgrep
2条回答

我终于发现了问题:是我的错!你知道吗

我意识到我在grep中使用的文件new_hairpins和我之前在代码中生成的文件不是用.close()关闭的。。。。你知道吗

当它在1879年的第一行工作时,我不认为问题可能来自这个文件。。。你知道吗

不管怎样,谢谢你们的帮助!你知道吗

您需要引用命令行参数,因为两者之间有空格:

"grep -A1 '"+name+" "+new_hairpins+"' | grep ....
          ^                         ^

否则,namenew_hairpins将被视为独立的参数。你知道吗

相关问题 更多 >

    热门问题