上一节内容自我感觉略显仓促,似乎并没有完全地把文件操作讲清楚,所以今天想再补充一些知识,力争能更好地完善这一部分的内容。

我们继续解释文件对象所提供的方法。文件的读取主要使用file.read(size)、file.readline()和file.readlines([sizehint])。size参数可以指定读取读取一定数目的数据, 然后作为字符串或字节对象返回,当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。

还是以我们前一节中的file1.txt文件举例,使用file.read(size)方法读取文件的内容。

f = open('./file1.txt', mode='r+')
str1 = f.read()print(str1)print('-------------------------')f.seek(0)
print(f.read(10))f.close()

以上代码中有一个问题值得我们注意。当我们第一调用完read()方法后,在第二次调用read(10)方法前调用了seek(0)方法,这是因为,当代码第一次执行完read()方法后,操作文件的光标已经到了文件的最后,此时如果不让光标回到文件开头,那么无论如何调用read()方法都不可能读到内容,光标的概念就类似于我们使用word时不停闪烁的光标,我们所有的操作,都是基于光标位置的,包括读写都是如此。

file.readline()是从文件中读取单独的一行,默认的换行符为 'n',如果返回一个空字符串, 说明已经已经读取到最后一行。我们上一节中结合while循环的例子就是使用的这个方法,这里就不重复举例了。

file.readlines([sizehint])是将从文件中读取出来的内容以列表的形式返回,列表中的元素即文件中的每一行;设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。

f = open('./file1.txt', mode='r+')
list1 = f.readlines()print(list1)print('-------------------------')f.seek(0)list2 = f.readlines(22)print(list2)

写文件操作最常使用的依旧是file.write(string),使用时需要注意当我们调用write(string)方法后,内容还没有正式的写入文件,当前只是存在于文件写缓冲区,我们需要调用flush()方法,将缓冲区内的数据正式写入文件对象里;其次,如果要写入一些不是字符串的东西, 那么将需要先进行转换。

对于光标的操作,有获取光标所在文件的位置file.tell()和移动光标在文件中的位置file.seek(offset, from_what)两个方法。对于file.tell(),它的返回值是从文件开头开始算起的字节数;对于file.seek()方法,其参数offset是指定移动多少个字符,from_what选项有三个:0 表示开头(默认值),1 表示当前位置,2 表示文件的结尾;由于offset是可选值,所以回到文件开头即为file.seek(0),去到文件末尾即为file.seek(2),这里就不单独举例了,有兴趣的小伙伴可以自行使用验证。

接下来再介绍一种处理文件对象的方式,使用with关键字,它的好处是在使用结束后,它会帮你正确的关闭文件。

with open('./file1.txt', mode='r+') as f:str1 = f.read(22)print(str1)print('---------------')print(f.closed)

使用with关键字的语法如例子,当我们使用完后,不需要手动去调用file对象的close()方法关闭对象,with对象会完成这个操作。我们可以通过file对象的closed值得知file对象的关闭状态。

补充内容就到这里,以后争取将各个部分的内容在同一节里面完成,各位小伙伴在阅读的时候也可以先回溯上一节的内容,结合起来形成完整的知识网络。


【python入门系列】

杨地瓜:【Python基础(十二)】文件的操作​zhuanlan.zhihu.com

杨地瓜:【Python基础(十一)】模块和库的引入​zhuanlan.zhihu.com

杨地瓜:【Python基础(十)】基本类型常用内置方法​zhuanlan.zhihu.com

杨地瓜:【Python基础(九)】函数基本语法​zhuanlan.zhihu.com

杨地瓜:【Python基础(八)】输入和输出​zhuanlan.zhihu.com

杨地瓜:【Python基础(七)】逻辑控制​zhuanlan.zhihu.com

杨地瓜:【Python基础(六)】运算符的介绍和使用​zhuanlan.zhihu.com

杨地瓜:【Python基础(五)】基本数据类型和操作(II)​zhuanlan.zhihu.com

杨地瓜:【Python基础(四)】基本数据类型和操作(I)​zhuanlan.zhihu.com

杨地瓜:【Python基础(三)】基础语法​zhuanlan.zhihu.com

杨地瓜:【Python基础(二)】计算机基本知识科普​zhuanlan.zhihu.com

杨地瓜:【Python基础(一)】环境搭建与工具的安装​zhuanlan.zhihu.com


【信息系统项目管理师考试分享】

杨地瓜:【项目管理(十一)】软考-信息系统项目管理师-论文总结(II)​zhuanlan.zhihu.com

杨地瓜:【项目管理(十)】软考-信息系统项目管理师-论文总结(I)​zhuanlan.zhihu.com

杨地瓜:【项目管理(九)】软考-信息系统项目管理师-案例分析总结(IV)​zhuanlan.zhihu.com

杨地瓜:【项目管理(八)】软考-信息系统项目管理师-案例分析总结(III)​zhuanlan.zhihu.com

杨地瓜:【项目管理(七)】软考-信息系统项目管理师-案例分析总结(II)​zhuanlan.zhihu.com

杨地瓜:【项目管理(六)】软考-信息系统项目管理师-案例分析总结(I)​zhuanlan.zhihu.com

杨地瓜:【项目管理(五)】软考-信息系统项目管理师-重点考察内容解析​zhuanlan.zhihu.com

杨地瓜:【项目管理(四)】软考-信息系统项目管理师-知识梳理篇​zhuanlan.zhihu.com

python 项目管理_【Python基础(十三)】文件的操作(II)相关推荐

  1. python 基础之文件读操作

    创建一个名为'尘曦'的文件内容如下 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. ...

  2. python低通滤波器_[Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波

    [Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波 发布时间:2019-04-28 20:35, 浏览次数:2739 , 标签: Python 该系列文章是讲解Python OpenCV ...

  3. 零基础学python张志强_零基础学Python最新章节_张志强著_掌阅小说网

    1.5 Python的开发工具 Python的开发工具非常丰富,有许多强大的IDE(Integrated Development Environment)工具,如Komodo.PythonWin.Ec ...

  4. 如何零基础学习python语言_零基础如何学习Python编程

    Python是一门简单优雅的计算机程序设计语言,相比于C语言.Java语言,Python编程具有以下特点: 1. Python语法简单,代码可读性高,容易入门: 2. Python代码具有一定的规范性 ...

  5. 零基础如何入门python语言_零基础如何开始学习 Python

    Python是一门简单优雅的计算机程序设计语言,相比于C语言.Java语言,Python编程具有以下特点: 1. Python语法简单,代码可读性高,容易入门: 2. Python代码具有一定的规范性 ...

  6. 树莓派python设置_树莓派基础设置

    Raspbian系统 下载链接:http://downloads.raspberrypi.org/raspbian_latest 默认帐号:Username: pi Password: raspber ...

  7. Python基础灬文件常用操作

    文件常用操作 文件内建函数和方法 open() :打开文件 read():输入 readline():输入一行 seek():文件内移动 write():输出 close():关闭文件 写文件writ ...

  8. Python对spss类型的sav文件读取操作

    一.安装库 python要对sav类型文件进行操作,需要安装savReaderWriter模块 savReaderWriter模块下载链接 下载后解压进入文件夹 在地址栏输入cmd 输入命令进行安装 ...

  9. 初识python 视频_#python day02 初识python 学习视频来源于 太白金星

    #python day02 初识python 学习视频来源于 太白金星 ''' 知识点:安装PyCharm''' # 设置鼠标条件字体大小:file ->settings # 搜索mouse E ...

最新文章

  1. Google 多任务学习框架 MMoE
  2. php 小程序登录授权解密,微信小程序授权登录,PHP解密数据,并返回用户信息token记住登录状态...
  3. Manacher's algorithm: 最长回文子串算法
  4. 《IT项目管理那些事儿》——新浪微博抽奖活动
  5. Linux/UNIX 图形操作环境KDE 与GNOME
  6. 算法导论第三版 16.1-5习题答案
  7. 【雪中漫步win7主题】情侣主题
  8. java定时任务 时间_java 定时任务的执行时间表示-
  9. 计算机语言中beta是什么意思,Tea语言迎来1.0第一个Beta版本
  10. springboot项目打包报错
  11. 澳大利亚域名_AU域名,澳大利亚域名,注册AU域名,au域名注册
  12. thinkphp3.2读取Excel文件
  13. 做了两年前端开发,平时就是拿 Vue 写写页面和组件,简历的项目经历应该怎么写得好看?
  14. 人民币小写转换为大写函数
  15. Windows 当前所接的屏幕检测
  16. c++ 编译error
  17. BNUOJ 26474 Bread Sorting
  18. win10英雄联盟登陆服务器未响应怎么办,Win10系统中登陆LOL失败怎么办
  19. Eric Xing:Petuum 1.1最后一次定期完全开源新版发布
  20. c++ prime plus 第三章

热门文章

  1. 浏览器工作原理与实践学习笔记
  2. linux怎么用两个进程传值,关于linux:将变量脚本参数传递给另一个脚本,然后将qsub传递给程序...
  3. Java黑皮书课后题第8章:**8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行、整列或者对角线都是1或0的行、列和对角线
  4. Java黑皮书课后题第7章:*7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序。改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换
  5. 5.编写程序,由键盘任意输入10个整数,分别统计其中的奇数和偶数的个数。
  6. 华南理工大学和浙大计算机学院,浙江大学和华南理工大学的办学实力比较
  7. 搜狐2012.9.15校园招聘会笔试题
  8. UVa 208 - Firetruck (回溯)
  9. struts2的文件上传机制
  10. HDU 2612 Find a way