我正在处理来自红外线声音检测器的结果,但有时它们会出现毛刺,因此数据点会记录为“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 :(得分: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
这将返回零的计数和总行数。