Python 3.x 改进文件的快速检查方法

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

嗨,伙计们,我需要一个正确的代码来检查一个文件是否真的是有效的 快进一个文件

fasta:symmbol>到标头,后跟一个序列

> 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:有任何提示吗