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. hdu5828 Rikka with Sequence

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5828 [题解] 考虑bzoj3211 花神游历各国,只是多了区间加操作. 考虑上题写法,区间全为1打标记 ...

  2. 【转】IOS版本自定义字体步骤

    本文转载自:http://quick.cocoachina.com/wiki/doku.php?id=ios%E7%89%88%E6%9C%AC%E4%BD%BF%E7%94%A8%E8%87%AA% ...

  3. input file 文件上传,js控制上传文件的大小和格式

    文件上传一般是用jquery的uploadify,比较好用.后面会出文章介绍uploadify这个插件. 但是,有时候为了偷懒,直接就用input 的file进行文件和图片等的上传,input fil ...

  4. poj 3104 Drying(二分查找)

    题目链接:http://poj.org/problem?id=3104 Drying Time Limit: 2000MS   Memory Limit: 65536K Total Submissio ...

  5. CTF两个经典的文件包含案例

    案例一URL:http://120.24.86.145:8003/代码 <?php include "waf.php"; include "flag.php&quo ...

  6. caffe Python API 之Dropout

    net.pool1 = caffe.layers.Pooling(net.myconv, pool=caffe.params.Pooling.MAX, kernel_size=2, stride=2) ...

  7. git学习笔记三

    1.每个分支的历史版本维护信息位置是.git/logs/refs/heads/master,这个位置的信息是文本文件,不是引用. harvey@harvey-Virtual-Machine:~/dem ...

  8. leetcode 之Gas Station(11)

    这题的思路很巧妙,用两个变量,一个变量衡量当前指针是否有效,一个衡量整个数组是否有解,需要好好体会. int gasStation(vector<int> &gas, vector ...

  9. PHP设计模式二-------单例模式

    1.单例模式的介绍 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点: 主要解决:一个全局使用的类频繁地创建与销毁. 关键代码:构造函数是私有的,克隆方法也是私有的. 1.1 懒汉式//1 ...

  10. Python Flask SQLALchemy基础知识

    一.介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并 ...