第二十八讲:文件:因为懂你,所以永恒

一、知识点:

0.file对象利用open函数来创建。

1.file文件的打开模式:f = open('文件地址',‘r/w/x/a等’)

  • ‘r’:只读模式,以只读方式打开文件(默认模式,文件必须存在,不存在则抛出异常)
  • ‘w’:只写模式,以写入的模式打开文件(不可读,不存在则创建,存在则清空内容)
  • ‘x’:只写模式(不可读,不存在则创建,存在则报错)
  • ‘a’:追加模式,以写入的模式打开文件(可读,不存在则创建,存在则在末尾追加写入,文件指针自动移到文件尾)

+表示可以同时读写某个文件

  • ‘r+’:读写,可读可写
  • ‘w+’:写读,可读可写,消除文件内容,然后以读写方式打开文件
  • ‘x+’:写读,可读可写
  • ‘a+’:写读,可读可写,以读写方式打开文件,并把文件指针自动移到文件尾)

b表示以字节的方式操作,以二进制模式打开文件,而不是文本模式打开

  • rb  或 r+b
  • wb 或 w+b
  • xb 或 w+b
  • ab 或 a+b

注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码。

3、文件的对象方法:

序号 方法及描述
1

file.close()

关闭文件。关闭后文件不能再进行读写操作。

2

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

3

file.fileno()

返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

4

file.isatty()

如果文件连接到一个终端设备返回 True,否则返回 False。

5

file.next()

返回文件下一行。

6

file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有。

7

file.readline([size])

读取整行,包括 "\n" 字符。

8

file.readlines([sizeint])

读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。

9

file.seek(offset[, whence])

设置文件当前位置

10

file.tell()

返回文件当前位置。

11

file.truncate([size])

从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。

12

file.write(str)

将字符串写入文件,返回的是写入的字符长度。

13

file.writelines(sequence)

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

--------------------------------------------------------------------我是一条分割线----------------------------------------------------------------------

二、课后作业:

0.下边只有一种方式不能打开文件,请问是哪一种?为什么?

>>> f = open('E:/test.txt','w')#A
>>> f = open('E:\test.txt','w')#B
>>> f = open('E://test.txt','w')#C
>>> f = open('E:\\test.txt','w')#D

答:B。路径需要注意反斜杠。(以下为摘抄内容)Windows在路径名中既可以接受斜线(/)也可以接受反斜线(\),不过如果使用反斜线作为路径名的分隔符的话,要注意使用双行转义,否则Python会将反斜线进行转义,例如(\n)看成一个换行符,(\t)看作一个制表符等。

1.打开一个文件我们使用open()函数,通过设置文件的打开模式,决定打开的文件具有哪些性质,请问默认的打开模式是什么呢?

答:open()函数默认的打开模式是“rt”,即可读文本的模式打开。

2.请问>>> open(' E: \\Test.bin' ,  ' xb' ) 是以什么样的模式打开文件的?

答:以可写入的二进制模式打开文件Test.bin。

3.尽管Python有所谓的“垃圾回收机制”,但对于打开了的文件,在不需要用到的时候我们仍然使用f. close()将文件对象“关闭”,这是为什么呢?

答:Python拥有垃圾收集机制,会在文件对象的引用计数降至零的时候自动关闭文件,所以在Python编程里,如果忘记关闭文件并不会带来什么危险。但并不是说就可以不要关闭文件,如果你对文件进行了写入操作,那么你应该在完成写入之后进行关闭文件。因为Python可能会缓存你写入文件中的数据,如果这中间断电了神马的,那些缓存的数据根本就不会写入到文件中。所以,为了安全起见,要养成使用完文件后立刻关闭的优雅习惯。(答案摘抄)

4. 如何将一个文件对象(f)中的数据存放进列表中?

答:list(f)

5.如何迭代打印出文件对象(f)的每一行数据?

>>> for eachline in f:print(eachline)

6.文件对象的内置方法f. read([size=-1])作用是读取文件对象内容,size参数是可选的,那如果设置了size=10,例如f. read(10),将返回什么?

答:将返回从文件指针开始的连续十个字符。

7.如何获得文件对象(f)当前文件指针的位置?

答:f.tell()

8.还是视频中的那个演示文件(record. txt),请问为何f. seek(45,  0)不会出错,但f. seek(46)就出错了呢?

>>> f.seek(46)
46
>>> f.readline()
Traceback (most recent call last):Flie "<pyshell#18>", line 1, in <module>f.readline()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xe3 in possition 4:illegal multibyte sequence

答:因为使用f. seek()定位的文件指针是按字节为单位进行计算的,演示文件(record. txt)是以GBK进行编码的,按照规则,一个汉字需要两个字节,f. seek(45)的位置位于字符“小”的开始位置,因此可以正常打印,而f. seek(46)的位置刚好位于字符“小”的中间位置,因此按照GBK的编码规则将无法将其解码!

--------------------------------------------------------------------我是一条分割线----------------------------------------------------------------------

三、动动手:

0.试尝试将文件(OpenMe.mp3)打印到屏幕上。

f = open('D:\\OpenMe.mp3')
for i in f:print(i,end='')
f.close()

1.编写代码,将上一题中的文件(OpenMe.mp3)保存为新文件(OpenMe.txt)

f = open('D:\\OpenMe.mp3')
f2 = open('D:\\OpenMe.txt','x')
f2.write(f.read())
f.close()
f2.close()

--------------------------------------------------------------------我是一条分割线----------------------------------------------------------------------

小甲鱼Python3学习笔记之第二十八讲(仅记录学习)相关推荐

  1. 高等数学学习笔记——第六十八讲——隐函数存在定理

    1. 问题引入--方程两边同时关于x求导数,求解隐函数导数 2. 要研究的问题:方程在什么条件下才能确定隐函数(隐函数的存在性):隐函数的连续性.可微性.求导方法 3. 隐函数存在定理(二元函数) 4 ...

  2. 线性代数学习笔记——第三十八讲——直线与直线的位置关系

    1. 直线与直线的位置关系1--平行但不重合 2. 直线与直线的位置关系2--重合 3. 直线与直线的位置关系3--相交 4. 直线与直线的位置关系4--异面 5. 两直线的夹角的定义 6. 两直线位 ...

  3. 线性代数学习笔记——第七十八讲——用正交变换化二次型为标准型

    1. 正交变换的定义: 任一n元实二次型都可用正交变换化为标准形 2.  用正交变换化二次型为标准形示例

  4. 线性代数学习笔记——第六十八讲——柯西—施瓦兹(Cauchy-Schwarz)不等式

    1. 柯西-施瓦兹不等式(分量形式及积分不等式) 柯西-施瓦兹(Cauchy-Schwarz)积分不等式的证明(2020-02-09补记): 2. 柯西和施瓦兹的简介 3. 三角不等式与柯西不等式是等 ...

  5. 高等数学学习笔记——第七十八讲——极坐标下二重积分的计算

    1. 问题的引入--对于某些积分区域,在直角坐标系下计算并不方便 2. 区域的极坐标描述 1. 直角坐标与极坐标的关系 2. 区域的极坐标描述(圆域.圆环域.极矩形) 3. 极坐标形式的二重积分 1. ...

  6. OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast

    OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...

  7. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope

    OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...

  8. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

  9. Slicer学习笔记(二十八)Elastix扩展模块

    Slicer学习笔记(二十八)Elastix扩展模块 1.代码结构 1.1.代码结构 1.2.页面布局 1.3.Elastix路径选择 [可选] 2.执行配准 2.1 先去找到elastix.exe的 ...

最新文章

  1. android sdk版本控制,1. 统一SDK版本管理配置
  2. 当我们输入一条SQL查询语句时,发生了什么?
  3. 这老哥把GPU当暖气用,省钱了
  4. 【错误记录】Flutter 环境安装相关问题 ( 执行 flutter doctor 命令后续错误处理 )
  5. 这是EnterLib PIAB的BUG吗?
  6. 智伴机器人课文跟读哪里有_火了!智伴机器人竟然出现在2018年高考试卷
  7. 《算法竞赛入门经典训练指南》pdf
  8. keras 官方文档
  9. ionic tab(选项卡)
  10. Qt的project文件的设置相关
  11. Python 脚本查询 ip纯真数据库
  12. qcc3020定制、qcc3020软件开发tws耳机的注意事项
  13. 微信小程序发布上线全流程(注册/开发/上传审核)
  14. 如何用电脑下载微信视频号中的视频?
  15. 详解Django的CSRF认证
  16. 根据指定的经纬度查询半径为5km的地点
  17. 爬取小说【含完整代码】
  18. wnmp环境 php7,WNMP 开发环境搭建
  19. 这份公众号运营攻略,可以帮你系统地运营好公众号
  20. 世界上读书最多的国家(以色列人均64本)

热门文章

  1. 输入法十年战事:为何夺冠的是第三方?
  2. TypeScript笔记(基础大全到井格游戏案例)
  3. python零基础入门教程视频下载-零基础学Python入门教程,视频资源下载
  4. 金属学复习【1】金属的晶体结构
  5. 物业管理APP解决方案开发
  6. python正则表达式(\S+)和 \d+的含义
  7. IOS学习之关于导航那些事
  8. 树莓派 ubuntu gpio_树莓派自动温控风扇
  9. java体重指数计算器程序_Android首接触--小程序(体重指数计算器)
  10. 南昌大专计算机学校有哪些,江西南昌大专单招学校有哪些