在python中搜索文件

在python中搜索文件,python,python-2.7,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.A

我正在处理次声探测器的结果,但有时它们会出现故障,因此数据点记录为“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;

逐行扫描文件,仅用
'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

这将返回一个零计数和一个总行计数。

您的代码在搜索时是什么样子的?这些文件有多大?
'0'
是否单独出现在一行上,或者这是二进制数据还是带有长行的文本?误报的可能性是什么(例如,有效的数据点可能是
'10420'
,不应算作2个
'0'
值)?这是执行搜索的代码:def findzero(fname):if os.path.isfile(fname):f=open(fname)s=mmap.mmap(f.fileno(),0,access=mmap.access\u READ)如果s.find('0')!=-1:打印“真”否则:打印“返回”;你可以在你的问题中添加这样的细节。这些文件都大约有35MB。0显示在其自身的一行上,但肯定存在误报的可能性。有什么更深入的调查会告诉您存在误报?这已经奏效了,谢谢。还有一件事,需要将数据点的百分比转换为0。要做到这一点,向上面的代码中添加什么是最好的方法?@user3755536:100%是什么?行数?是的,基本上就是行数。对不起,我的问题不够清楚,很难知道要输入哪些详细信息。对不起,我没有问行数,因为我已经知道行数是多少。这正是我需要的帮助,谢谢你。