Python 分段故障
我正在UNIX机器上使用python 2.4.4(旧机器,对此无能为力)。我对python/编程非常陌生,以前从未使用过UNIX机器。这就是我想做的:Python 分段故障,python,unix,segmentation-fault,fasta,Python,Unix,Segmentation Fault,Fasta,我正在UNIX机器上使用python 2.4.4(旧机器,对此无能为力)。我对python/编程非常陌生,以前从未使用过UNIX机器。这就是我想做的: 从FASTA文件(蛋白质+核苷酸)提取单个序列到临时文本文件 将此临时文件交给名为“threader”的程序 将threader(名为tempresult.out)的输出附加到名为results.out的文件中 删除临时文件 删除tempresult.out文件 使用下一个FASTA序列重复 以下是我目前的代码: import os from i
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()
导入操作系统
从itertools导入groupby
input_file=open('controls.txt','r')
输出文件=打开('results.out','a')
def fasta_解析器(fasta_名称):
输入=fasta\u名称
parse=(groupby中x的x[1](输入,lambda行:行[0]==“>”)
对于解析中的标头:
header=header.next()[0:][.strip()
seq=“\n”.join(parse.next()中s的s.strip())
收益率(标题“\n”,序号)
parsedfile=fasta_解析器(输入_文件)
mylist=list(解析文件)
索引=0
而索引
当我运行这个脚本时,我得到错误“Segmentation Fault”。从我收集到的信息来看,这与我扰乱记忆有关,我不应该扰乱(???)。我想这与临时文件有关,但我不知道该如何解决这个问题
任何帮助都将不胜感激
谢谢
更新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()
导入操作系统
input_file=open('control.txt','r')
输出文件=打开('results.out','a')
x=0
欢迎来到SO!部分正确-分段冲突是由于程序试图访问不应该访问的内存造成的。但是您可能也有部分错误-错误可能出现在您没有向我们展示的代码中(即您的fasta_解析器例程)。请回答您的问题并添加fasta_parser的代码,以及.OT,但是您在tempfile.write(..)和parsedfile=(fasta…)周围有额外的参数(它们并不重要)。您不需要它们,但是@FrankSchmitt关于需要看到fasta_parser()完成的说法是正确的:)这是一个有点像弗兰肯斯坦黑客的工作,但它是有效的。任何改进它的建议都将非常棒!此外,我会使用“biopython”,但我使用的机器没有,我也没有安装它的权限。谢谢括号里的注释@FrankSchmitt doneMore问题:-)什么是threader
?如果您注释掉os.system()
调用,是否仍会收到错误?欢迎使用SO!部分正确-分段冲突是由于程序试图访问不应该访问的内存造成的。但是您可能也有部分错误-错误可能出现在您没有向我们展示的代码中(即您的fasta_解析器例程)。请回答您的问题并添加fasta_parser的代码,以及.OT,但是您在tempfile.write(..)和parsedfile=(fasta…)周围有额外的参数(它们并不重要)。您不需要它们,但是@FrankSchmitt关于需要看到fasta_parser()完成的说法是正确的:)这是一个有点像弗兰肯斯坦黑客的工作,但它是有效的。任何改进它的建议都将非常棒!此外,我会使用“biopython”,但我使用的机器没有,我也没有安装它的权限。谢谢括号里的注释@FrankSchmitt doneMore问题:-)什么是threader
?如果注释掉os.system()
调用,是否仍会出现错误?