Python 从文件中检索数据时速度更快;[使用open()as,然后循环]或[f.readlines,然后循环]
我有一大堆文件要读和处理 这是读取和处理文件的更快方法Python 从文件中检索数据时速度更快;[使用open()as,然后循环]或[f.readlines,然后循环],python,performance,memory-management,file-io,Python,Performance,Memory Management,File Io,我有一大堆文件要读和处理 这是读取和处理文件的更快方法 with open('file') as file: for line in file: print line 或 前者可以使用缓冲读取;后者需要先将整个文件读入内存,然后才能开始循环 一般来说,最好使用前者;它不会比后者慢,而且在内存使用方面也更好。如果您有一些行基大文件,我强烈建议您使用以下行来实现您的目标: file = open('file') for line in f.readlines(): print
with open('file') as file:
for line in file:
print line
或
前者可以使用缓冲读取;后者需要先将整个文件读入内存,然后才能开始循环
一般来说,最好使用前者;它不会比后者慢,而且在内存使用方面也更好。如果您有一些行基大文件,我强烈建议您使用以下行来实现您的目标:
file = open('file')
for line in f.readlines():
print line
file.close()
有两点,
PS:前一个“with”语句只是
try:open()的缩写;执行:通过
;readlines是使用迭代器实现的,因此它不会占用您的全部内存。前一种方法比后一种方法涉及每行之后的I/O操作吗?缓冲读取意味着它不必在每行之后执行IO操作-就在它清空缓冲区时(缓冲区的大小自动确定)。这通常是要走的路;它允许时间和内存性能的最佳组合。对文件对象的迭代是通过迭代器实现的,因此没有理由调用readlines()
。with
块在处理完文件后也会自动关闭该文件。@琥珀色迭代文件对象的语法不太容易理解,但无论如何你是对的。f.readlines()将把整个文件读入内存,而不管你是将它赋给变量还是变量not@gnibbler “这通常用于允许逐行高效读取大型文件,但不必将整个文件加载到内存中。”@Mayli,该引号指的是当readlines()
与可选大小提示一起使用时。此处的相关引号是“f.readlines()返回包含文件中所有数据行的列表。"
file = open('file')
for line in f.readlines():
print line
file.close()