[英]Counting characters in a file in Python
我正在尝试编写一个计算文本文件中字符数并返回结果的函数。 我有以下代码;
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的输出。有帮助吗?
附件是错误消息“ 错误”屏幕的屏幕截图。
您无需使用函数的参数,而是使用常量"data.txt"
覆盖filename
:
def file_size(filename):
"""Function that counts the number of characters in a file"""
with open(filename, 'r') as file:
return len(file.read())
ASCII文件的超级高效解决方案(在theta(1)中运行):
import os
print(os.stat(filename).st_size)
如果只需要ASCII文件的文件大小,则应使用os.stat
:
import os
def file_size(filename):
st = os.stat(filename)
return st.st_size
该功能的最大优点是不需要读取文件。 Python只是向文件系统询问文件大小。
您可以在iter(partial(f.read, 1), '')
周围使用带有生成器表达式的sum()
,从这个答案中获取启发:
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 ,因此您无需将整个文件读入内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.