我正在处理次声探测器的结果,但有时它们会出现故障,因此数据点被记录为“0”。这是毫无值(value)的数据。我希望能够在文件中搜索“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,因此您可以对 bool 值求和来获得计数。
如果您需要百分比,则需要分别计算行数和 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
这将返回零计数和总行数。
关于python - 在 python 中的文件内搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24384646/