Python文件处理之文件读取方式(二)

Python的open文件的读取方式有以下几种方法:

  read([size]):读取文件,如果传了size参数,则读取size字节,否则读取全部

  readline([size]):读取一行

  readlines([size]):读取完文件,返回文件每一行所组成的列表

例:

假如我有一个blogCblog.txt文件,文件内容为:

blogCblog

blog1Cblog

blog2Cblog

用read来读取一下

1 f = open(‘blogCblog.txt‘)  #首先先创建一个文件对象
2 fr = f.read()  #用read()方法读取文件内容
3 print fr  #打印所读取到的内容
4
5 #打印结果:
6 #blogCblog
7 #blog1Cblog
8 #blog2Cblog

上面可以看到,用read()方法读取到的文件内容是和我们本来blogCblog.txt里面的内容是一样的,也就是read()方法没有传入size参数时是默认读取全部的。

1 f = open(‘blogCblog.txt‘)  #首先先创建一个文件对象
2 fr = f.read(4)  #用read()方法读取文件4个字节的内容
3 print fr  #打印所读取到的内容
4
5 #打印结果:blog

上面可以看到read() 方法传入了一个参数‘4’,也就是读取文件内容的4个字节,通过打印可以看到,确实是读取到了4个字节的内容‘blog’。如果你传入的参数(size)大于文件的大小,那么就会返回文件的全部内容。

现在用readline()来读取一下,还是那个文件:

1 f = open(‘blogCblog.txt‘)  #首先先创建一个文件对象
2 fr = f.readline()  #用readline()方法读取文件的一行内容
3 print fr  #打印所读取到的内容
4
5 #打印结果:blogCblog

上面可以看到用readline()方法读取文件的一行的内容,确实是读取到了blogCblog这一行内容,接着来看下传入了size参数的readline():

1 f = open(‘blogCblog.txt‘)  #首先先创建一个文件对象
2 fr = f.readline(4)  #用readline()方法读取文件的一行中的4字节内容内容
3 print fr  #打印所读取到的内容
4
5 #打印结果:blog

上面的结果跟read(4)的结果是一样的,那是不是就没有区别了呢,其实不然,区别大大的,我们来再加一行 f.readline(4):(如果传入的参数(size)大于行的大小,就会返回整行)

1 f = open(‘blogCblog.txt‘)  #首先先创建一个文件对象
2 fr = f.readline(4)  #用readline()方法读取文件的一行中的4字节内容内容
3 fr = f.readline(4)  #再添加一行f.readline(4)
4 print fr  #打印所读取到的内容
5
6 #打印结果:Cblo

上面的代码第三行添加再添加了一行 f.readline(4),打印结果为Cblog。我们来再添加几行一行 f.readline(4)来看下:

 1 f = open(‘blogCblog.txt‘)  #首先先创建一个文件对象
 2 fr = f.readline(4)  #用readline()方法读取文件的一行中的4字节内容内容
 3 fr = f.readline(4)  #再添加一行f.readline(4)
 4 fr1 = f.readline(4)
 5 fr2 = f.readline(4)
 6 fr3 = f.readline(4)
 7 print fr, fr1, fr2, fr3  #打印所读取到的内容
 8
 9 #打印结果:Cblo g
10 #         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()的读取:

1 f = open(‘blogCblog.txt‘)  #首先先创建一个文件对象
2 fr = f.readlines()  #用readlines()方法读取文件
3 print fr  #打印所读取到的内容
4
5 #打印结果:[‘blogCblog\n‘, ‘blog1Cblog\n‘, ‘blog2Cblog‘]

上面结果确实是文件内容所组成的list,接着来看readlines()传入参数(size),会怎样:

1 f = open(‘blogCblog.txt‘)  #首先先创建一个文件对象
2 fr = f.readlines(4)  #用readlines()方法读取文件,传入4,读取4个字节
3 print fr  #打印所读取到的内容
4
5
6 #打印结果:[‘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,下面来看代码:

 1 import io
 2 print io.DEFAULT_BUFFER_SIZE
 3
 4 f = open(‘blogCblog.txt‘)  #首先先创建一个文件对象
 5 fr = f.readlines(8192)  #用readlines()方法读取文件,传入8192,读取4个字节
 6 print len(fr)  #打印所读取到的内容长度
 7
 8
 9 #打印结果:8192
10 #         820

上面可以看到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()方法关闭文件

时间: 2024-10-13 01:04:20

Python文件处理之文件读取方式(二)的相关文章

config文件的两种读取方式

1.项目默认的读取webconfig中的,代码如下 1 public void GetAccounts() 2 3 { 4 5 Configuration config=System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 6 7 //判断App.config配置文件中是否有Key(非null) 8 9 if (ConfigurationManager.AppSet

php读取文件内容的三种方式(转)

分享下php读取文件内容的三种方法. php读取文件内容: //**************第一种读取方式***************************** header("content-type:text/html;charset=utf-8"); //文件路径 $file_path="text.txt"; //判断是否有这个文件 if(file_exists($file_path)){ if($fp=fopen($file_path,"a+&

文件的创建,读取,写入,修改,删除---python入门

转自:http://blog.163.com/jackylau_v/blog/static/175754040201181505158356/ 一.用Python创建一个新文件,内容是从0到9的整数, 每个数字占一行: #python >>>f=open('f.txt','w') # r只读,w可写,a追加 >>>for i in range(0,10):f.write(str(i)+'\n') . . . >>> f.close() 二.文件内容追加

CSV文件在Python中的几种处理方式

Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型.在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据,CSV文件通常以纯文本的方式存储数据表.今天,我将给大家分享在Python中如何操作CSV文件. 一.数据源 首先,我们来看看本次操作的数据源,图1 CSV文件是在Excel中打开的,图2 CSV文件是在Notepad++中打开的,我们在图2中可以看到数值之间是以逗号分隔开的,每行末尾是CR回车符和LF换行符(请注意,

Python文件操作:文件的打开关闭读取写入

Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文件. 2.操作文件:读/写. 3.关闭文件. 操作系统中的文件默认处于存储状态,读写文件时需要请求操作系统打开一个要在当前程序操作的对象,打开不存在的文件可以创建文件.open()方法通过接收"文件路径"以及“文件打开模式”等参数来打开一个文件,并且返回文件对象.打开后的文件只能在当前程序

Python文件处理之文件打开方式(一)

Python中打开一个文件是同过open函数来打开的,并返回一个文件对象,以下为open函数的参数: open(name[, mode[buf]]) name:文件路径 mode:打开方式 buf:缓冲大小 open根据你提供的name.mode.buf来打开一个文件并返回文件对象,如果只填写name,mode则默认为只读方式,buf则默认为-1,以下为open的一些mode: 例: 1 print type(open(‘blog.txt’)) 2 3 #打印结果:<type 'file'>

FileOutputStream字节输出流和FileInputStream输入流(切记:out是输出到本地中,in是输入到程序中)这里介绍大文件和小文件的读取方式

//FileOutputStream public class FileOutputStreamDemo { /**字节流:适用于任何文件,以字节为单位,进行读写操作  *字节流操作步骤:  *1.创建文件对象  *2.创建字节流  *3.读写操作  *4.关闭流  */ //字节流(写操作) public static void main(String[] args) { String messageString = "hello world";  byte[] bytes = me

Python学习15:Open读取文件

在之前我已经学习过raw_input和argv了,在这一节的Python学习中,我学习怎样使用脚本打开普通的文本文件,读取它并且关闭文件.关闭文件很重要,关闭是为了释放资源,防止内存被耗尽,导致机器死锁.另外,关闭文件还有一个作用,当写文件时,关闭后将缓冲区中的内容写入文件本身. 下面是一个简单的读取文本文件的脚本.我们可以用两种方式来实现这个功能:第一种是一个带参数的脚本.第二种是不使用参数,直接使用变量来读取文件的脚本. 第一种: 1. # 导入argv模块 2. from sys impo

在python中实现对文件的写入,读取,复制,批量重命名

1.写入内容至文件中 def write_file(): open_file = open("xxxx.txt","w") open_file.write("i want to open a file and write this.\n") open_file.close() write_file() 2.读取文件中的内容 #思路:1.以什么方式打开 2.读取文件 3.关闭文件 def read_file(): read_file = open(