Python 3.x 改进文件的快速检查方法
嗨,伙计们,我需要一个正确的代码来检查一个文件是否真的是有效的 快进一个文件 fasta:symmbol>到标头,后跟一个序列Python 3.x 改进文件的快速检查方法,python-3.x,Python 3.x,嗨,伙计们,我需要一个正确的代码来检查一个文件是否真的是有效的 快进一个文件 fasta:symmbol>到标头,后跟一个序列 > header1 ADDFFGGVVSS > header2 GBHHYYTTRRR 有没有办法让这个愚蠢的函数更好 def is_header(line): """Checks if the line is a header line in fasta file.""" return line[0] == '>' de
> header1
ADDFFGGVVSS
> header2
GBHHYYTTRRR
有没有办法让这个愚蠢的函数更好
def is_header(line):
"""Checks if the line is a header line in fasta file."""
return line[0] == '>'
def check_fasta(filename):
"""Checks if the file is a valid fasta file."""
with open(filename, 'r') as fh:
for line in fh:
if not line.startswith(">") and sum(g for g,_ in groupby(fh, key=is_header)) == 0:
return False
return True
使用:
check_fasta('data/regions.txt')
结果:
False or True
这不是一个好结果。可能是打印声明或返回错误
谢谢现在你检查每一行;这将在没有“>”时立即引发错误-这是您想要的吗?另外,您要为检查的每一行重新打开文件?这不是问题的答案,但是--在您的
groupby
调用中,您要打开文件名。。。但您已经在with声明中打开了它。删除groupby
调用中的open(filename)
,并将其替换为fh
@MrFuppes Hi实际上我想检查所有文件,因为snipet在找到第一个'>'时停止,假设它是一个fasta文件,但当我在空文件或部分fasta(有一些无'>'起始行)中使用它时,它返回True。我想检查一下intire文件。也许你可以利用现有的软件包,比如?它不在Python中,但您应该仍然能够从Python等脚本调用其可执行文件。编写自己的文件检查器可能会很痛苦;-)@PauloSergioSchlogl我对:和sum(g代表g,u在groupby(fh,key=is_header)中)感到困惑==0:有任何提示吗