Как пользователю ввести имя файла с определенным расширением? - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь создать программу, использующую python, которая будет вводить пользовательский файл fasta, который позже можно будет использовать для обрезки праймеров.Я пытаюсь использовать BioPython, но продолжаю сталкиваться с ошибками.Код, который я пробовал, выглядит следующим образом:

from Bio import SeqIO

in_file = input("Enter filename with extension:")

def is_fasta(in_file):
    with open(in_file) as handle:
        fasta = SeqIO.parse(handle, "fasta")
        return any(fasta)

is_fasta(in_file)

Я хочу иметь возможность запросить файл fasta, и, если введенный файл не является fasta, отобразить сообщение об ошибке и предложить повторить попытку.

1 Ответ

0 голосов
/ 02 декабря 2018

Вы знакомы с оператором Python try?Вы можете просто попытаться открыть и прочитать файл, и если он не работает (то есть вызывает исключение), вы снова предлагаете пользователю.

Я не знаю Bio.SeqIO или даже модуль Bio,Я полагаю, что ошибка связана со строкой, содержащей ваш вызов SeqIO.parse?Вы можете попробовать что-то вроде этого:

from Bio import SeqIO

while True:
    in_file = input("Enter filename with extension:")
    try:
        with open(in_file) as handle:
            fasta = SeqIO.parse(handle, "fasta")
    except:
        print("Could not read file. Please ensure it is a 'fasta' file and try again.")
        continue
    break

Без исключения, назначение fasta должно сработать, и мы вырвемся из цикла while с break.

...