关于python:如何检查给定文件是否为FASTA? |
您所在的位置:网站首页 › 如何判断文件格式类型是否正确 › 关于python:如何检查给定文件是否为FASTA? |
我正在设计一个需要在早期阶段之一输入.fasta文件的代码。 现在,我正在使用此功能验证输入: 12345678910111213def file_validation(fasta): while True: try: file_name= str(raw_input(fasta)) except IOError: print("Please give the name of the fasta file that exists in the folder!") continue if not(file_name.endswith(".fasta")): print("Please give the name of the file with the .fasta extension!") else: break return file_name现在,尽管此功能可以正常工作,但就用户可能输入的文件(尽管文件名以.fasta结尾)可能在其中包含一些非.fasta内容的意义而言,仍有一些错误余地。 我应该怎么做才能防止这种情况并使用户知道他/她的.fasta文件已损坏? 相关讨论 编写Fasta解析器或在线查找现有解析器。 我自己对Fasta一无所知。 但是,在stackoverflow.com/a/7655072/131187上有一个可能对您有用的答案。 我会说,假设有道理,请尝试解析几百个字符。 如果解析成功,请接受文件。 @Kevin我尝试将Biopython SeqIO SeqIO.parse(file_name,fasta))用作条件树的一部分,以查看是否可以进行解析。 可悲的是,它不能警告用户该文件不是有效的.fasta文件。 这是你的意思吗? @BillBell很遗憾,我还没有完全了解您链接的代码的某些部分。 您是否认为我可以将其复制并粘贴到我的函数中,以便告知用户其文件不是正确的.fasta格式? 我知道您的问题已经回答!为什么不仅仅像FASTA一样分析文件并查看它是否损坏? 使用biopython,它通过在非FASTA文件上返回空生成器而静默失败: 1234567891011from Bio import SeqIO my_file ="example.csv" # Obviously not FASTA def is_fasta(filename): with open(filename,"r") as handle: fasta = SeqIO.parse(handle,"fasta") return any(fasta) # False when `fasta` is empty, i.e. wasn't a FASTA file is_fasta(my_file) # False 相关讨论 我试图弄清楚如何将以open(filename)....开始的代码部分集成到我的函数中,而Im很难使工作继续进行。 您是否认为我应该将其设为一个单独的函数,然后在原始验证函数中调用它? 这已经是一个独立的功能,因此您应该可以从验证功能中调用它。 您能说明您的意图吗? 我只是想确保我的代码没有中断,并且会继续提示用户输入有效答案。 最终,您的设置成功了! 非常感谢你。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |