是否有一个Python包经过优化以确定ASCII文件中的行数?
是否有优化的Python包来确定一个大ASCII文件中有多少行,而不将整个文件加载到内存中?这与问题涉及内置Python解决方案的主题不同 您可以逐行遍历它:是否有一个Python包经过优化以确定ASCII文件中的行数?,python,Python,是否有优化的Python包来确定一个大ASCII文件中有多少行,而不将整个文件加载到内存中?这与问题涉及内置Python解决方案的主题不同 您可以逐行遍历它: with open('filename.txt', 'r') as handle: num_lines = sum(1 for line in handle) 以更大的块读取并只计算换行可能会更快: with open('filename.txt', 'r') as handle: num_lines = 0
with open('filename.txt', 'r') as handle:
num_lines = sum(1 for line in handle)
以更大的块读取并只计算换行可能会更快:
with open('filename.txt', 'r') as handle:
num_lines = 0
for chunk in iter(lambda: handle.read(1024*1024), None):
num_lines += chunk.count('\n')
另一个选项涉及使用fileinput的lineno方法
是和否。通过读取较小的数据块,您可以一次不将整个文件存储在内存中,但文件的每个字节仍需要在某个时间加载到内存中。这与。。。有何不同?这些问题对我来说完全一样,我感兴趣的是找到一个比Python附带的默认工具更快的Python包。在Python中如何廉价地获取行数的问题中,解决方案只关注内置解决方案。在内部,文件的大块已经在内存中缓冲。迭代器一次不会从磁盘读取一行数据。它已经在逐字节遍历文件,当遇到新行字符时返回一行。
import fileinput
x = fileinput.input('test.csv')
for line in x:
pass
print x.lineno()
3
x.close()