Я пытаюсь выучить Python, и я хотел написать парсер текста. Я пытаюсь разобрать большой файл fasta, полный строк ДНК (он имеет длину 136275 строк и размер 9,8 МБ).
Моя проблема в том, что программа всегда перестает работать в точном положении (строка 16076) и не выдает ошибку.
def file_parser(filepath):
data = []
file_content = open(filepath, 'r')
line = file_content.readline()
i=0
while line:
if line == 0:
break
elif line[0] == ">":
key, name = line.split('|')[-2:]
dna = ''
line = file_content.readline()
i = i+1
while not line.startswith('>'): #line[0] != ">": #
dna = dna + line
line = file_content.readline()
dna = dna.rstrip('\n')
name = name.rstrip('\n')
row = {
key,
name,
dna
}
data.append(row)
print(i)
else:
print("Your file is corrupted")
return data
Итак, мой вопрос (как новичку в написании Python), что не так с моим кодом, что он перестает работать?
Я предполагаю, что это может быть line.startswith('>')
, потому что я переключил его на это, потому что у меня был какой-то строковый индекс из-за ошибок диапазона, но если честно, я не совсем уверен.
Мой тестовый файл взят из этого источника: ftp: //ftp.ncbi.nih.gov/genomes/Acanthisitta_chloris/protein/
(это .fa.gz-файл)
Я использую слегка настроенные Ubuntu 18.10 и python3.
Спасибо за ваше время.