我正在尝试编写一个计算文本文件中字符数并返回结果的函数。我有以下代码;
def file_size(filename):
"""Function that counts the number of characters in a file"""
filename = "data.txt"
with open(filename, 'r') as file:
text = file.read()
len_chars = sum(len(word) for word in text)
return len_chars
当我使用我创建的文本文件进行测试时,这似乎在我的IDE中正常工作。但是当我将代码提交给doctest程序时,我得到一个错误,说它总是给出10的输出。任何帮助?
附件是错误消息的屏幕截图 Error screen
答案 0 :(得分:4)
您不使用该函数的参数,但使用常量filename
覆盖"data.txt"
:
def file_size(filename):
"""Function that counts the number of characters in a file"""
with open(filename, 'r') as file:
return len(file.read())
答案 1 :(得分:1)
ASCII文件的超高效解决方案(在theta(1)中运行):
import os
print(os.stat(filename).st_size)
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以sum()
使用iter(partial(f.read, 1), '')
周围的生成器表达式,从computeIfAbsent()
获取灵感:
from functools import partial
def num_chars(filename):
"""Function that counts the number of characters in a file"""
with open(filename) as f:
return sum(1 for _ in iter(partial(f.read, 1), ''))
与使用f.read()
相比,这种方法的主要优点是 lazy ,因此您不会将整个文件读入内存。