IndentationError: неожиданный unindent почему?
IndentationError: неожиданный unindent почему???
#!/usr/bin/python
import sys
class Seq:
def __init__(self, id, adnseq, colen):
self.id = id
self.dna = adnseq
self.cdnlen = colen
self.prot = ""
def __str__(self):
return ">%sn%sn" % (self.id, self.prot)
def translate(self, transtable):
self.prot = ""
for i in range(0,len(self.dna),self.cdnlen):
codon = self.dna[i:i+self.cdnlen]
aa = transtable[codon]
self.prot += aa
def parseCommandOptions(cmdargs):
tfname = cmdargs[1]
sfname = cmdargs[2]
return (tfname, sfname)
def readTTable(fname):
try:
ttable = {}
cdnlen = -1
tfile = open(fname, "r")
for line in tfile:
linearr = line.split()
codon = linearr[0]
cdnlen = len(codon)
aa = linearr[1]
ttable[codon] = aa
tfile.close()
return (ttable, cdnlen)
def translateSData(sfname, cdnlen, ttable):
try:
sequences = []
seqf = open(seq_fname, "r")
line = seqf.readline()
while line:
if line[0] == ">":
id = line[1:len(line)].strip()
seq = ""
line = seqf.readline()
while line and line[0] != '>':
seq += line.strip()
line = seqf.readline()
sequence = Seq(id, seq, cdnlen)
sequence.translate(ttable)
sequences.append(sequence)
seqf.close()
return sequences
if __name__ == "__main__":
(trans_table_fname, seq_fname) = parseCommandOptions(sys.argv)
(transtable, colen) = readTTable(trans_table_fname)
seqs = translateSData(seq_fname, colen, transtable)
for s in seqs:
print s
Он говорит:
def translateSeqData(sfname, cdnlen, ttable):
^
IndentationError: unexpected unindent
почему? Я проверял тысячи раз и я не могу найти проблему. Я использовал только вкладки и никаких пробелов. Кроме того, иногда он просит определить класс. Это нормально?
3 ответов
Это потому, что у вас есть:
def readTTable(fname):
try:
без соответствующего except
блок после try:
блок. Каждый try
должен иметь по крайней мере одно соответствие except
.
посмотреть ошибки и исключения раздел учебника Python.
эта ошибка может фактически быть в коде, предшествующем сообщению об ошибке. См. Например, если у вас есть синтаксическая ошибка, как показано ниже, вы получите ошибку вмятины. Синтаксическая ошибка фактически находится рядом с "except", потому что она должна содержать": "сразу после него.
try:
#do something
except
print 'error/exception'
def printError(e):
print e
Если вы измените" except "выше на" except:", ошибка исчезнет.
удачи.