基本上,我希望能够计算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)
您所需要做的就是将每行中的字符数相加(data
):
total = 0
for line in f:
data = length(line)
total += data
print(total)
有两个问题。
首先,对于文件中的每一行,都要将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))
这样做的问题是,您必须有足够的内存来同时存储整个文件。有时这是不合适的。但有时确实如此。
当您迭代一个文件(以文本模式打开)时,您正在迭代它的行
CCD_ 7可以重写为CCD_。
您的length函数看起来应该可以工作,但您正在将打开的文件发送给它,而不是每行。