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

How to user input filename with a specific extension?

我正在尝试使用 python 创建一个程序,用户将输入一个 fasta 文件,该文件稍后可用于 trim 引物。我正在尝试使用 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,则显示错误消息并提示重试。

您熟悉 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 的赋值应该有效,我们将用 break.

跳出 while 循环