用户如何输入具有特定扩展名的文件名?

时间:2018-12-02 01:37:14

标签: python bioinformatics biopython

我正在尝试使用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 :(得分:4)

您是否熟悉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循环。