我正在尝试使用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,请显示错误消息并提示重试。
答案 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
循环。