我在UNIX机器上使用python 2.4.4(旧机器,无法做任何事情)。我是python /编程的新手,以前从未使用过UNIX机器。这就是我想要做的事情:
到目前为止,这是我的代码:
import os
from itertools import groupby
input_file = open('controls.txt', 'r')
output_file = open('results.out', 'a')
def fasta_parser(fasta_name):
input = fasta_name
parse = (x[1] for x in groupby(input, lambda line: line[0] == ">"))
for header in parse:
header = header.next()[0:].strip()
seq = "\n".join(s.strip() for s in parse.next())
yield (header, '\n', seq)
parsedfile = fasta_parser(input_file)
mylist = list(parsedfile)
index = 0
while index < len(mylist):
temp_file = open('temp.txt', 'a+')
temp_file.write(' '.join(mylist[index]))
os.system('threader' + ' temp.txt' + ' tempresult.out' + ' structures.txt')
os.remove('temp.txt')
f = open('tempresult.out', 'r')
data = str(f.read())
output_file.write(data)
os.remove('tempresult.out')
index +=1
output_file.close()
temp_file.close()
input_file.close()
当我运行此脚本时,我收到错误&#39; Segmentation Fault&#39;。从我收集的内容来看,这与我一起弄乱记忆,我不应该弄乱(???)。我认为它与临时文件有关,但我不知道如何解决这个问题。
非常感谢任何帮助!
谢谢!
更新1: 当我像这样多次给它相同的序列时,Threader工作正常:
import os
input_file = open('control.txt', 'r')
output_file = open('results.out', 'a')
x=0
while x<3:
os.system('threader' + ' control.txt' + ' tempresult.out' + ' structures.txt')
f = open('tempresult.out', 'r')
data = str(f.read())
output_file.write(data)
os.remove('result.out')
x += 1
output_file.close()
input_file.close()
更新2:如果其他人收到此错误。我忘了在调用threader程序之前关闭temp.txt。