1、open函数语法:
python通过open函数打开文件,建立程序与文件之间的连接。
open函数语法:open(filename[,mode[,buffering]])
其中filename是指要进行操作的文件名称,由文件名称和路径组成,需要加引号。
mode为操作模式参数,包括读、写、追加等。
buffering是缓冲参数,控制着文件的缓冲。当buffering=0或者False时,I/O就是无缓冲的,所有的读写操作都是直接针对硬盘的,如果是1或者True,I/O就是有缓冲的,python是用内存来代替硬盘,使得程序运行更快。大于1代表缓冲区的大小,单位为字节,-1或者其他任意负数代表使用默认的缓冲区大小。
只有filename参数是必须指定的,mode和buffering参数则是可选的,mode参数的缺省值为'r'。
 
2、参数mode的取值:
(1)基本取值:

r、w、a为打开文件的基本模式,分别表示只读、只写(覆盖写)、追加(追加写)。
b、t、+、U,与上面三个基本模式组合使用。
注意:文本模式用于打开文本文件,二进制模式用户打开二进制文件。
(2)常见的mode组合取值:
(3)举例说明:
现在window系统PC机硬盘上存在文件G:\file1.txt,对其进行演示操作。
①r模式:
报错的原因是路径中包含的'\'被识别为转义符,因此造成文件路径错误。
不能直接使用print打印对象f1的内容,需要使用read方法读取内容后,方能打印。
上面的open函数中虽然没有指定mode参数,但其实使用了mode的缺省值'r'。
效果一样,所以当只使用'r'参数时,可以省略。
另外,这里如果不想使用两个反斜杠,那么可以使用‘r+字符串’形式:
字符串前加r代表此字符串为原样显示,不转义。第一个'r'就是让字符串原样显示,第二个'r'是open模式。
②w模式:
由于只使用了'w',因此程序对该文件只有写权限,没有读权限,因此使用read方法读时会报错。
完成这一步操作后,通过资源管理器去查看file1.txt的文件内容,如下,发现里面已被清空。
这是因为还没有断开程序与文件的连接,所以追加的内容尚未保存,因此需要使用close方法来关闭文件(即断开文件与程序的连接)。重新打开文件可以看到,文件已被新内容覆盖更新。
③a模式:
报错的原因是'a'模式只有写的权限,没有读的权限。
完成write操作后,但在关闭文件前,可以看到file1.txt文件并没有被更新。
关闭文件后,可以看到新内容被追加到文件末尾。
如果想换行追加,可以加上在字符串中加上换行符。
④r+模式:
'r+'模式是同时读写模式,但是必须指定写的位置,从指定的位置开始按字符逐个覆盖写。
从上面的两次写操作过程可以看出,第一次通过seek(0)指定从第一个字符开始覆盖写,第二次通过seek(5)从第6个字符开始覆盖写,没有被覆盖的字符继续保留。
如果不指定其实位置就开始进行写操作的话,就会报错,如下。
对于seek()方法的具体作用,在后面将会谈到。
⑤w+模式:
对于'w+'模式,其只是在'w'模式上添加了能读取文件对象的权限。
另外,从上面的例子中需要注意一点,一旦通过'w+'模式将一个文件指定给一个文件对象,那么这个文件就立即被清空,所以这里的f10.read()的结果是空串。也就是说,使用'w'或者'w+'模式,原文件的内容并不是在使用write方法时被覆盖掉,而是在授予写权限时就立即被清空。
⑥a+模式:
'a+'模式相对于'a'是增加了读文件的权限,但是从上例中可以看出,使用了read方法后,再进行write写操作就会报错,而不使用read方法直接进行write写操作是不会报错的,并且追加写成功。
 
3、常用的文件方法:
(1)基本介绍:
(2)举例说明:
现有文件:G:\file2.txt,文件内容如下:
read()方法是读取全部文件内全部数据内容,以字符串形式显示,对于文件中的换行符,在结果中以'\n'显式显示。读读取前,指针位于文件头(位置为0),读取全部后,指针位于文件末尾的下一位。返回文件位置用tell()方法,结果为长整型。
read(size)方式是指定读取字符串的字节数。最初指针放在文件开头,读取完毕后,移动至已读取字符串的下一位。
所以这里,使用read(5)读取了前5个字符,指针移动到第6个字符处,也就是编号为5L的位置。接着再使用read(7)读取的时候就从第6个字符开始读,以此类推。
使用readline()方法,逐行读取,每次读取一行,读取完毕后指针移到下一行开头。
readlines()方式是将读取的结果以列表形式存储,读取完毕后,指针移到文件末尾的下一位。原文件中的每一行是返回列表中的一个元素。
使用'a'模式进行追加写,打开文件后,指针仍指在文件头,通过write()方法写进字符串后,指针移到文件尾的下一位。
这个例子与上个例子的区别用于说明,当我们想在文件中追加写多行时,需要在追加的字符串中显式的写出换行符(\n)。
现有文件file3.txt,文件内容如下:
使用readlines()方法将读取文件的内容保存成列表。然后使用writelines()方法将该列表追加到另一个文件的末尾。每一个元素称为一行,由于起始位置为原文件的末尾下一位(并不是下一行),所以追加的第一行并没有单独成行,而是在原文件的最后一行的后面。
上例可以说明,writelines()方法接受列表,将列表每个元素作为一行写入文件中。
注意,因为有write()方法,所以python中是不存在writeline()方法的。
  

初见Python<6>:文件读写的更多相关文章

  1. 【转】Python之文件读写

    [转]Python之文件读写 本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 ...

  2. 【Python】文件读写操作

    Python的文件读写有点类似php的文件读写.php的文件读写已经在<[php]让记事本成为你调控变量的控制台>(点击打开链接)说过了,以下用一个小样例说明Python的文件读写. 在F ...

  3. (转)Python之文件读写

    Python之文件读写 原文:https://www.cnblogs.com/huilixieqi/p/6494891.html 本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 ...

  4. python 基础-文件读写'r' 和 'rb'区别

    原文链接: python基础-文件读写'r' 和 'rb'区别 一.Python文件读写的几种模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 1.文件使用方式标识 'r ...

  5. Python之文件读写

    本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...

  6. python之文件读写详解

    打开文件 函数open() 参数说明: file:文件路径 mode: 文件的读写方式,默认'r',只读方式: buffering:设置缓冲策略,0用于二进制文件,1为行缓冲,用于文本模式:默认二进制 ...

  7. python中文件读写

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  8. python的文件读写笔记

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  9. python里文件读写操作

    文件读写操作一种基本操作,但是里面也存在很多需要注意的问题,例如字符编码.内存缓冲.指针位置等等.如果忽视这些问题就会引起很多不必要的麻烦.简单来说,文件的读写分为几个过程: 打开文件,并定义操作文件 ...

随机推荐

  1. HDU 1422 重温世界杯 (dp)

    题目链接 Problem Description 世界杯结束了,意大利人连本带利的收回了法国人6年前欠他们的债,捧起了大力神杯,成就了4星意大利. 世界杯虽然结束了,但是这界世界杯给我们还是留下许多值 ...

  2. mssql注入中的储存用法删除与恢复

    删除: use master exec sp_dropextendedproc 'xp_cmdshell' exec sp_dropextendedproc 'xp_enumgroups' exec ...

  3. uboot makefile构建分析

    前言 几年前分析过uboot的构建及启动过程,做了笔记,但最终没有转为文章.这次又有机会开发嵌入式产品了(之前一年多都是在搞x86 linux),看了下uboot的构建过程,觉得有必要写下整个分析过程 ...

  4. copy_from_user分析

    前言 copy_from_user函数的目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0.它内部的实现当然不仅仅拷贝数据,还需要考虑到传入的用户空间地址是否有效,比如地址是不 ...

  5. python实战===老司机奇技淫巧系列之字符转换成图片

    先放两张效果图:

  6. 对list对象进行排序

    List<LjlSevOrdersVO> list = ljlSevOrdersService.findSevForOrders(ljlSevOrdersVO); //查出所有是自愿者的订 ...

  7. mac下安装golang

    1.安装homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/in ...

  8. yum 安装 jdk

    https://www.cnblogs.com/kevingrace/p/5870814.html yum -y list java* 以yum库中java-1.7.0为例注:“*”表示将java-1 ...

  9. cvs 日常使用

    http://www.51testing.com/html/44/17144-2954.html http://www.chedong.com/tech/cvs_card.html

  10. 用淘宝镜像cnpm代替npm

    安装淘宝镜像cnpm: $ sudo npm install -g cnpm --registry=https://registry.npm.taobao.org 然后就大部分可以用cnpm来代替np ...