проблема с startwith () при разборе больших текстовых файлов в python - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь выучить 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.

Спасибо за ваше время.

...