如何计算文件中的字符数(不使用len函数)?

时间:2013-11-21 21:30:29

标签: python file

基本上,我希望能够计算txt文件中的字符数(用户输入文件名)。我可以让它显示文件中有多少行,但不显示多少行。我没有使用len函数,这就是我所拥有的:

def length(n):
    value = 0
    for char in n:
        value += 1
return value
filename = input('Enter the name of the file: ')
f = open(filename)
for data in f:
    data = length(f)
    print(data)

3 个答案:

答案 0 :(得分:2)

您需要做的就是汇总每行中的字符数(data):

total = 0
for line in f:
    data = length(line)
    total += data
print(total)

答案 1 :(得分:1)

有两个问题。

首先,对于文件中的每一行,您将f本身 - 即一系列行 - 传递给length。这就是为什么它打印文件中的行数。该行序列的长度是文件中的行数。

要解决此问题,您需要传递每一行data - 即一系列字符。所以:

for data in f:
    print length(data)

接下来,虽然这将正确计算每个行的长度,但您必须将它们全部添加才能获得整个文件的长度。所以:

total_length = 0
for data in f:
    total_length += length(data)
print(total_length)

但是,还有另一种方法可以解决这个问题。如果您read()该文件,您将获得一个巨大的字符串,而不是一系列单独的行。因此,您只需拨打length一次:

data = f.read()
print(length(data))

这个问题是你必须有足够的内存来存储整个文件。有时这不合适。但有时却是。

答案 2 :(得分:0)

当您遍历文件(在文本模式下打开)时,您正在迭代它的行 for data in f:可以重写为for line in f:,更容易看到它在做什么。

您的长度函数看起来应该可以正常工作,但您打开的文件发送给它而不是每行。