繁体   English   中英

用Python计算文件中的字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM