Python文件处理之文件读取方式(二)
Python的open文件的读取方式有以下几种方法:
read([size]):读取文件,如果传了size参数,则读取size字节,否则读取全部
readline([size]):读取一行
readlines([size]):读取完文件,返回文件每一行所组成的列表
例:
假如我有一个blogCblog.txt文件,文件内容为:
blogCblog
blog1Cblog
blog2Cblog
用read来读取一下
f = open('blogCblog.txt') #首先先创建一个文件对象 fr = f.read() #用read()方法读取文件内容 print fr #打印所读取到的内容 #打印结果: #blogCblog #blog1Cblog #blog2Cblog
上面可以看到,用read()方法读取到的文件内容是和我们本来blogCblog.txt里面的内容是一样的,也就是read()方法没有传入size参数时是默认读取全部的。
f = open('blogCblog.txt') #首先先创建一个文件对象 fr = f.read(4) #用read()方法读取文件4个字节的内容 print fr #打印所读取到的内容 #打印结果:blog
上面可以看到read() 方法传入了一个参数‘4’,也就是读取文件内容的4个字节,通过打印可以看到,确实是读取到了4个字节的内容‘blog’。如果你传入的参数(size)大于文件的大小,那么就会返回文件的全部内容。
现在用readline()来读取一下,还是那个文件:
f = open('blogCblog.txt') #首先先创建一个文件对象 fr = f.readline() #用readline()方法读取文件的一行内容 print fr #打印所读取到的内容 #打印结果:blogCblog
上面可以看到用readline()方法读取文件的一行的内容,确实是读取到了blogCblog这一行内容,接着来看下传入了size参数的readline():
f = open('blogCblog.txt') #首先先创建一个文件对象 fr = f.readline(4) #用readline()方法读取文件的一行中的4字节内容内容 print fr #打印所读取到的内容 #打印结果:blog
上面的结果跟read(4)的结果是一样的,那是不是就没有区别了呢,其实不然,区别大大的,我们来再加一行 f.readline(4):(如果传入的参数(size)大于行的大小,就会返回整行)
f = open('blogCblog.txt') #首先先创建一个文件对象 fr = f.readline(4) #用readline()方法读取文件的一行中的4字节内容内容 fr = f.readline(4) #再添加一行f.readline(4) print fr #打印所读取到的内容 #打印结果:Cblo
上面的代码第三行添加再添加了一行 f.readline(4),打印结果为Cblog。我们来再添加几行一行 f.readline(4)来看下:
f = open('blogCblog.txt') #首先先创建一个文件对象 fr = f.readline(4) #用readline()方法读取文件的一行中的4字节内容内容 fr = f.readline(4) #再添加一行f.readline(4) fr1 = f.readline(4) fr2 = f.readline(4) fr3 = f.readline(4) print fr, fr1, fr2, fr3 #打印所读取到的内容 #打印结果:Cblo g # blog 1Cbl
上面的代码第4、5、6行分别添加了一行 f.readline(4),并分别赋值给fr1、fr2、fr3,打印结果为:fr为Cblo、fr1为g、fr2为blog、fr3为1Cbl,从中可以看出readline()传入参数后是读取所传的字节数,当再次执行readline(4)的时候会从上次读取的位置开始读取,直到这行读取完毕,当当前行读取完毕再次使用readline(4)时会从下行开始,同样的readline()没有传参时是一样的,也就是读取文件的一行,当再次使用readline()时,读取第二行。
接着来看下readlines()的读取:
f = open('blogCblog.txt') #首先先创建一个文件对象 fr = f.readlines() #用readlines()方法读取文件 print fr #打印所读取到的内容 #打印结果:['blogCblog\n', 'blog1Cblog\n', 'blog2Cblog']
上面结果确实是文件内容所组成的list,接着来看readlines()传入参数(size),会怎样:
f = open('blogCblog.txt') #首先先创建一个文件对象 fr = f.readlines(4) #用readlines()方法读取文件,传入4,读取4个字节 print fr #打印所读取到的内容 #打印结果:['blogCblog\n', 'blog1Cblog\n', 'blog2Cblog']
咦?不是读取4个字节吗,怎么返回的还是list?跟想象的不同喔!其实readlins()的size跟read(),readline()的size是有区别的,readlines()的size是Python定义的sizehint,通过io.DEFAULT_BUFFER_SIZE可以知道Python定义的sizehint的大小,为了验证,把blogCblog.txt文件里面的内容改为1万行blogCblog,下面来看代码:
import io print io.DEFAULT_BUFFER_SIZE f = open('blogCblog.txt') #首先先创建一个文件对象 fr = f.readlines(8192) #用readlines()方法读取文件,传入8192,读取4个字节 print len(fr) #打印所读取到的内容长度 #打印结果:8192
上面可以看到Python定义的sizehint的大小为8192字节,同时用readlines传入8192,并赋值给fr变量,再打印出fr的长度,fr为820(也就是820条blogCblog),也可以计算一下是否正确:blogCblog.txt文件里blogCblog为10个字节(包括\n),820*10=8200(字节),咦,不是读取8192字节吗,怎么读取了8200个字节呢,原来,当读取到820行的时候,还没有读完,只读到bl,因为是读行,所以会自动把第820行读完整。
注:操作完文件之后,记得要用close()方法关闭文件
Python文件处理之文件读取方式(二)的更多相关文章
- python 大文件以行为单位读取方式比对
http://www.cnblogs.com/aicro/p/3371986.html 先前需要做一个使用python读取大文件(大于1G),并逐条存入内存进行处理的工作.做了很多的尝试,最终看到了如 ...
- JavaIO流——简单对文件的写入及读取(二)
前文对Io字符流的输入进行了介绍,在这就不再讲了,简单的来写该怎么读取文件内容吧 public static void readFile(String Filename) throws IOExcep ...
- Django文件上传三种方式以及简单预览功能
主要内容: 一.文件长传的三种方式 二.简单预览功能实现 一.form表单上传 1.页面代码 <!DOCTYPE html> <html lang="en"> ...
- 爬虫文件存储:txt文档,json文件,csv文件
5.1 文件存储 文件存储形式可以是多种多样的,比如可以保存成 TXT 纯文本形式,也可以保存为 Json 格式.CSV 格式等,本节我们来了解下文本文件的存储方式. 5.1.1 TXT文本存储 将数 ...
- python保存二维列表到txt文件,读取txt文件里面的数据转化为二维列表
源码: # 读文件里面的数据转化为二维列表 def Read_list(filename): file1 = open(filename+".txt", "r" ...
- python读写Excel文件--使用xlrd模块读取,xlwt模块写入
一.安装xlrd模块和xlwt模块 1. 下载xlrd模块和xlwt模块 到python官网http://pypi.python.org/pypi/xlrd下载模块.下载的文件例如:xlrd-0.9. ...
- 文件的创建,读取,写入,修改,删除---python入门
转自:http://blog.163.com/jackylau_v/blog/static/175754040201181505158356/ 一.用Python创建一个新文件,内容是从0到9的整数, ...
- Python文件操作:文件的打开关闭读取写入
Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...
- CSV文件在Python中的几种处理方式
Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型.在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据,CSV文件通常以纯文 ...
随机推荐
- 【模拟】XMU 1055 数七
题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1055 题目大意: 报数游戏,不能报7的倍数和2进制下含有111的数. 给定n,m(1& ...
- 【Android官方Training教程】Getting Started部分学习笔记
Getting Started Welcome to Training for Android developers. Here you'll find sets of lessons within ...
- STL_iterator迭代器(3)——函数和函数对象
STL中,函数被称为算法,也就是说它们和标准C库函数相比,它们更为通用.STL算法通过重载operator()函数实现为模板类或模板函数.这些类用于创建函数对象,对容器中的数据进行各种各样的操作.下面 ...
- SKCropNode类
继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode) NSCopying(SKNode) NSObject(NSObject) 框架 /System/ ...
- Install Oracle 10g on Red Hat Linux 5.3 Step by Step
一.虚拟机配置 1. 虚拟机(VBox 4.3.12) 2. 配置虚拟机网卡网络.选择host-only.VirtualBox Host-Only Network网卡IP为设置为192.168.1.1 ...
- Java 编程的动态性,第3部分: 应用反射--转载
在 上个月的文章中,我介绍了Java Reflection API,并简要地讲述了它的一些基本功能.我还仔细研究了反射的性能,并且在文章的最后给出了一些指导方针,告诉读者在一个应用程序中何时应该使用反 ...
- [转] PostgreSQL学习手册(函数和操作符)
一.逻辑操作符: 常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符: 下面是PostgreSQL中提供的比较操作符列表: 操作符 描述 < ...
- C#获取文件夹下指定格式的所有文件
C#获取文件夹下指定格式的所有文件的方法,虽然很简单,但还是分享一下吧,用到时可以稍加修改和优化就可以使用. 获取指定目录下所有文件 //最要使用 System.IO.Directory.GetFil ...
- Linux下python升级
Centos即使用Yum更新也是Python2.6.6所以需要升级到Python2.7.8 1.先下载源码包 1 wget https://www.python.org/ftp/python/2.7. ...
- Mui实现退出登录
document.getElementById("logout").addEventListener("tap",function(){ var btn=[&q ...