Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个Python包经过优化以确定ASCII文件中的行数?_Python - Fatal编程技术网

是否有一个Python包经过优化以确定ASCII文件中的行数?

是否有一个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

是否有优化的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

    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()