一般的读取文件的方法:

with open(file_path, "r") as f:

print f.read()

或者

with open(file_path,"r") as f:

for line in f.readlines():

print line

read()是一次性把文件内容以字符串的方式读到内存,放到一个字符串变量中

readlines() 是一次性读取所有内容,并按行生成一个list

因一次性读取,若文件内容过大,则会将内存爆掉。报错:“MemoryError”

读取大几G的大文件,可以利用生成器 generator

方法一: 将文件切分成小段,每次处理完小段,释放内存

def read_in_block(file_path):

BLOCK_SIZE=1024

with open(file_path,"r") as f:

while True:

block =f.read(BLOCK_SIZE) #每次读取固定长度到内存缓冲区

if block:

yield block

else:

return #如果读取到文件末尾,则退出

for block in read_in_block(file_path):

print block

// 这个方法,速度很快(只有3s),但有个问题,若满足了1024时,会将正好在1024位置的数据切开,如下

cad1a596-fe14-45c4-b920-8bc0eab38ee6

c6f0c5bf-4359-4a28-9f90-3c4f61b5e12d

3815cd95-2147-4701-8d50-273325140643

c047d057-c33d-4a69-995a-5

29cb5cb04ee

afd9cffb-09f0-4347-bf12-34485969b366

3c145a79-c72c-43db-8e68-02be8046c6b4

虽然每个block都是str, 但无法直接得到每行的id,只能再切分。

方法二 利用open("","")系统自带方法生成的迭代对象

with open(file_path) as f:

for line in f:

print line

for line in f 这种用法是把文件对象f当作迭代对象,系统将自动处理IO缓存和内存管理。

耗时较第1种方法慢一点,要25s。 但每个Line, type都是str, 都是自己需要的一行数据(一行是一个id)。

>>> f = open("dup_file - Copy (2).txt")

>>> type(f)

>>> type(f.read())

>>> f.read()

''

>>>print  f.read()

aac66f36-d2ad-4d94-9804-2220262cc354

c5a1b5ee-32b6-4912-8b90-ece3bd36d1e5

90e6509a-e918-447e-92ee-b853b9b49f15

7b7495d3-1aa5-48b5-a305-ae137d46d605

>>> f.readlines()

[]

>>> type(f.readlines())

>>> print f.readlines()

[]

>>> for i in f.readlines():

... type (i)

... print i

994761db-37fa-4243-9d13-0acd193763dd

993b2806-51fe-412d-8df2-526ea550e889

aac66f36-d2ad-4d94-9804-2220262cc354

>>> type(f.readline())

// // //

>>> f = open("dup_file - Copy (2).txt")

>>> f.readline()

'8957d983-05e2-4a54-a7b3-f1532421c7a7\n'

>>> f.readline()

'ccf30309-2a02-4d09-8ea8-70c3da8de09d\n'

>>> f.readline()

'492ddb07-e0c5-4dda-ae91-8b3700d05a79\n'

>>> f.readline()

'9cee8472-dfc1-49ac-90c3-572f68373934\n'

>>> f.readline()

''

>>> f.readline()

''

// // // 第1次调用f.readline(),没有输出或者操作,后面再也无法循环到

>>> f = open("dup_file - Copy (2).txt")

>>> type(f.readline())

>>> f.readline()

'ccf30309-2a02-4d09-8ea8-70c3da8de09d\n'

>>> f.readline()

'492ddb07-e0c5-4dda-ae91-8b3700d05a79\n'

>>> f.readline()

'9cee8472-dfc1-49ac-90c3-572f68373934\n'

>>> f.readline()

''

>>> f.readline()

// // //  使用文件对象f

>>> f = open("dup_file - Copy (2).txt")

>>> for i in f:

... type(i)

... print i

...

8957d983-05e2-4a54-a7b3-f1532421c7a7

ccf30309-2a02-4d09-8ea8-70c3da8de09d

492ddb07-e0c5-4dda-ae91-8b3700d05a79

9cee8472-dfc1-49ac-90c3-572f68373934

>>> f = open("dup_file - Copy (2).txt")

>>> for i in f.readlines():

... type(i)

... print i

...

8957d983-05e2-4a54-a7b3-f1532421c7a7

ccf30309-2a02-4d09-8ea8-70c3da8de09d

492ddb07-e0c5-4dda-ae91-8b3700d05a79

9cee8472-dfc1-49ac-90c3-572f68373934

python高效读取大文件_python 如何读取大文件相关推荐

  1. python找不到csv文件_Python如何读取csv文件

    逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本). 纯文本意味着该文件是一个字符序列, ...

  2. python中如何打开csv文件_Python如何读取csv文件

    逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本). 纯文本意味着该文件是一个字符序列, ...

  3. 在python里面怎么读取文件_python怎么读取文件内容

    详细内容 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出OSError的错误. 完整的语法格式为:(推荐学习: ...

  4. python读取nii文件_python实现批量nii文件转换为png图像

    之前介绍过单个nii文件转换成png图像: 这里介绍将多个nii文件(保存在一个文件夹下)转换成png图像.且图像单个文件夹的名称与nii名字相同. import numpy as np import ...

  5. python读取docx文件_Python应用 | 读写docx文件 (值得收藏的技能)

    字处理软件是平时办公必备的同时也是最常用的软件之一,而字处理软件用的最多最频繁的就是微软的word,其扩展名为docx.在日常工作中,可能需要对很多的docx文件进行批处理,例如教师在批阅学生提交的电 ...

  6. python3 读取.plist文件_Python学习笔记 -5 - 文件操作

    Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...

  7. python获取设备硬件信息_Python实现读取机器硬件信息的方法示例

    本文实例讲述了Python实现读取机器硬件信息的方法.分享给大家供大家参考,具体如下: 本人最近新学python ,用到关于机器的相关信息,经过一番研究,从网上查找资料,经过测试,总结了一下相关的方法 ...

  8. python读取excel中文_python如何读取excel

    python 读取excel可分为以下几步:首先安装excel库xlrd,然后获取excel文件位置并读取,最后读取sheet和指定的rows和cols内容 今天将要介绍的是如何通过Python语言来 ...

  9. python except用法和作用_python上手--异常处理与文件

    本专栏python属于上手系列,因为网络资源众多,有从零基础开始介绍的,也有各种进阶应用,我在这个专栏里就从上手来介绍python,零基础也许不一定合适.但实践永远是获得认知的手段,因此上手实践操作对 ...

  10. python输出字体的大小_Python密码学编程:文件的加密与解密

    在之前的章节中,编写的程序只能操作较少的信息,这些信息往往是以字符串的形式直接写在代码中的.但本章中的程序可以对整个文件进行加密和解密,文件的大小可以包括成千上万个字符. 本章要点 open()方法. ...

最新文章

  1. Win7 命令行下C语言学习环境搭建(三)
  2. centos /dev/mapper/cl-root 100% 解决方法
  3. linux shell 和 golang 查询服务器硬件信息
  4. python实现dns劫持_Python程序之DNS劫持
  5. Spring 中常用的设计模式对比
  6. 使用NSURLProtocol实现UIWebView的离线缓存的简单实现
  7. 计算机考试报名无法弹出支付界面,教资报名支付页面不弹出怎么办 2021教师资格证报名入口网址...
  8. Python中的异常处理try、exception、raise
  9. ROS下载Gazebo模型到本地
  10. HDOJ2005 ( 第几天? ) 【水题】
  11. relocation R_X86_64_PC32 against symbol lua_newstate can not be used when making a shared object
  12. 直观而简单的解决方案--软件设计的永恒追求
  13. 控制反转和依赖注入的理解(通俗易懂)_Spring 的本质系列之依赖注入_一点课堂(多岸学院)...
  14. 苹果手机计算机记录,苹果手机怎么查找以前的历史通话记录
  15. COMFORT 美食 | 四季银河,心飨臻味
  16. 通俗理解:第一型曲线积分,第二型曲线积分,第一型曲面积分,第二型曲面积分,二重积分,三重积分之间的内外联系
  17. c语言子函数定义与调用,C语言的简单函数定义与调用
  18. 新初三暑假的记录和总结
  19. 运行jmc时提示“未检测到本地(可附加的)JVM“
  20. 报名成功冲向高级软件工程师之路开始了

热门文章

  1. python数字形式转换代码_Python数字(number)
  2. 陈宝林《最优化理论与算法》超详细学习笔记 (三)————单纯形法
  3. 【月报】Aavegotchi 7 月更新请查收!
  4. 关于大龄读博的几点回答?
  5. 基于JAVA小学课后辅助平台计算机毕业设计源码+数据库+lw文档+系统+部署
  6. 云计算之路-阿里云上:愚人节被阿里云OCS愚
  7. GitHub「有偿刷Star」遭热议,请别赚开源的黑心钱
  8. 随笔-我的富二代同事们
  9. Lisp 的本质(1)
  10. 苹果手机更新系统服务器地址,苹果手机更新系统后耗电严重?教你调整这些设置,省电不止一倍...