在python中的文件中搜索

时间:2014-06-24 10:46:03

标签: python python-2.7

我正在处理来自红外线声音检测器的结果,但有时它们会出现毛刺,因此数据点会记录为“0”。这是毫无价值的数据。我希望能够在文件中搜索“0”,计算它们并打印出结果。

我迄今为止所做的就是在文件中搜索“0”并获得真/假答案。

这是我的代码:

def findzero( fname ): 
    if os.path.isfile(fname): 
        f = open( fname ) 
        s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) 
        if s.find('0') != -1: 
            print 'true' 
        else: 
            print '' 
    return;

1 个答案:

答案 0 :(得分:2)

逐行扫描文件,仅用'0'计算行数:

def countzero(fname): 
    try:
        with open(fname) as f:
            return sum(line.strip() == '0' for line in f)
    except IOError:
        # not a file we can read
        return None

Python bool类型是int的子类,True等于1,False为0,因此您可以对布尔值求和以获得计数

如果您需要百分比,则需要分别计算行数和0计数:

def count_zeros_and_lines(fname): 
    try:
        with open(fname) as f:
            zeros = total = 0
            for line in f:
                if line.strip() == '0':
                    zeros += 1
                total += 1
            return zeros, total
    except IOError:
        # not a file we can read
        return None

这将返回零的计数和总行数。