it's possible to determine how many lines exist in file without per line iteration?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How to get line count cheaply in Python?
很好的一天。我下面有一些代码,它实现了每行文件读取和计数器迭代。
1 2 3 4 5 6 | def __set_quantity_filled_lines_in_file(self): count = 0 with open(self.filename, 'r') as f: for line in f: count += 1 return count |
我的问题是,是否有方法可以确定当前文件中有多少行文本数据,而不需要每行迭代?
谢谢!
一般来说,不可能比读取文件中的每个字符和计算换行符做得更好。
如果您知道有关文件内部结构的详细信息,则可能会出现这种情况。例如,如果文件的长度为1024KB,每行的长度为1KB,则可以推断文件中有1024行。
我不确定python是否有这个功能,高度怀疑它,但它本质上需要读取整个文件。换行符由字符表示(实际上取决于系统),因此,如果不浏览整个文件,就无法知道文件中存在多少换行符。
您可以使用readlines()文件方法,这可能是最简单的方法。
如果您希望有所不同,可以使用read()成员函数获取整个文件,并使用collections.counter类计算cr、lf、crlr和lfcr字符组合。但是,您必须处理各种终止线路的方法。类似:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import collections f=open("myfile","rb") d=f.read() f.close() c=collections.Counter(d) lines1=c[' '] lines2=c[' '] lines3=c[' ']-lines1-lines2 lines4=c[' ']-lines1-lines2 nlines=lines3+lines4 |
不,只能通过迭代整个文件的内容(或将整个文件读取到内存中)来检索此类信息。但是,除非你确定文件总是很小,最好不要考虑这样做)。
即使您不循环文件内容,您调用的函数也是这样。例如,
这给出了答案,但读取整个文件并将行存储在列表中
1 | len(f.readlines()) |