基本上,我希望能够计算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)
答案 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:
,更容易看到它在做什么。
您的长度函数看起来应该可以正常工作,但您将打开的文件发送给它而不是每行。