0

我正在尝试创建一个 Python 代码来计算文本文件中的行数。但是,它不会识别 for 语句,因为它在它下面的缩进上给了我错误。

#*********************end of sec 1*****************************
item=open("back.txt","r")
i=0
countlist=[line.strip() for line in item]#seperate lines
        i=1+i
print i
item.close()
4

7 回答 7

2
print len(list(open("some_file.txt")))

不需要with ...或关闭文件......这不会保留对 fh 的引用,所以它应该垃圾收集和销毁就好了

于 2013-07-22T18:46:16.870 回答
1
with open("back.txt") as f:
    print len(f.readlines())
于 2013-07-22T18:48:06.657 回答
1

尝试这个:

for line in item:
    i=i+1
于 2013-07-22T18:49:04.633 回答
1
with open('back.txt', 'r') as item:
    nbr = sum(1 for i in item)

不应该在内存中保留太多不需要的生成器表达式。

于 2013-07-22T18:51:39.403 回答
1

尝试这个,

with open("back.txt", "r") as backfile:
    lines = backfile.readlines()
    return len(lines)
于 2013-07-22T18:45:59.497 回答
0

for 封装在括号中,i=1+i 不在 for 循环的范围内。因此,i=1+1 不应缩进。

于 2013-07-22T18:46:28.643 回答
0

你实际上没有for循环。你有一个列表理解。列表推导不允许或要求在每次迭代时执行缩进的语句块;它只是建立一个列表。如果你只想要行数,你想要这个:

with open(filename) as f:
    rowcount = sum(1 for line in f)

这会在您完成后关闭文件,即使在 CPython 以外的 Python 实现上也是如此,并且它不会将整个文件存储在内存中,因此它适用于大文件。如果您需要实际的行列表,则需要:

with open(filename) as f:
    rows = [line.strip() for line in f]
rowcount = len(rows)
于 2013-07-22T18:55:58.620 回答