如果我想逐行遍历文本文件,下面是我的方法:
for curr_line in open('my_file.txt', 'r').readlines()
print '|' + curr_line + '|'
如果我想遍历基于分号分隔符的文本,下面是我的方法:
for curr_line in open('my_file.txt', 'r').read().split(';')
print '|' + curr_line + '|'
如果我想逐行遍历一个非常大的文本文件,我是这样做的:
for curr_line in open('my_file.txt', 'r').xreadlines()
print '|' + curr_line + '|'
但是如何遍历基于分号分隔符的非常大的文本文件呢?它是7+千兆字节,所以我无法将整个内容读入内存。你知道吗
下面是示例输入文件my_file.txt
:
AAAA;BBBBB
BB;CCC;
DDDDD
D
D;
EEEE;F
以下是我希望看到的基于上述代码段的输出:
|AAAA|
|BBBBB
BB|
|CCC|
|DDDDD
D
D|
|EEEE|
|F|
方法
.readlines()
将整个文件读入一个列表。对于7GB文件,这可能不可行。你知道吗在添加的示例中,您可以使用mmap和正则表达式进行整个文件的正则表达式匹配,而无需加载整个文件:
例如,打印:
下面是一个“reader”对象,它将从文件中读取块(大小由您选择),并在找到块时发出分号分隔的项:
例如,您可以使用:
输出:
相关问题 更多 >
编程相关推荐