python中open函数详解

在python中文件的读取分为三步走:
读:打开文件 -> 读文件 -> 关闭文件
(有点像把大象放进冰箱需要几步?的问题)

1、open函数

open函数主要运用到两个参数,文件名和mode,文件名是添加该文件对象的变量,mode是告诉编译器和开发者文件通过怎样的方式进行使用。因此在Python中打开文件的代码如下:

file_object = open('filename','mode','encoding')

mode
mode参数可以不写,默认mode参数是“r”。mode参数如下:

  • ‘r’ – 只读模式,当文件处在”只读“的模式时使用。
  • ‘w’ – 写入模式,将新信息编辑写入文件中的时候使用(使用高模式的时候、任何现存的同名文件的内容将会被擦除,从而写入新的内容分)
    写入模式要慎用,哪怕仅仅是运行了file=open(”filename“,”w“)这句话,那么该文件中所有内容全部被擦除。
  • ‘a’ – append模式,将新数据加到文件末尾,不会擦除现存的同名文件的内容。
  • ‘r+’ – 特殊的”读取“ + ”写入“模式,当同时存在读写操作的时候使用
    总结为一张图为:
  • 第三个参数:encoding
  • 表示的是返回的数据采用何种编码,一般采用utf-8 或者 gbk(encoding参数也可以不写)

2、创建文本文件 create a text file

file = open('testfile.txt', 'w') file.write('Hello World\n')
file.write('This is our new text file\n')
file.write('and this is another line. \n')
file.write('Why? Because we can. \n') file.close()

运行代码以后,在本地就会出现一个叫test file的文本文件,里面的内容为:
Hello World
This is our new text file
and this is another line
Why? Because we can.

3、读取:在python中读取txt文件

file = open('testfile.text', 'r')
print(file.read())

将会把该文本文件中所有的内容展示出来
另外,如下只想打印文件文件中的部分内容,也可以采用下面的方式

file = open('testfile.txt', 'r')
print(file.read(5))

编译器将会读写文本文件中存储的前5个字符

逐行输出

如果想要逐行输出,而不是把所有内容打印出来,以至于没有换行、所有内容都挤在一起,那么需要调用readlines()函数。当调用这个方法的时候,将会把文本中的每一行作为一个元素放在list中,返回包含了所有行的list。

file = open('testfile.txt', 'r')
print(file.readlines())

如果需要指定打印出第二行,代码如下:

file = open('testfile.txt', 'r')
print(file.readlines()[1])

循环文本文件

我们也可以采用循环的方式的将文件中的内容逐行输出:

file = open('testfile.txt', 'r')
for line in file: print(line)

4、文件写入

文件写入也是三步:打开文件——写入文件——关闭文件

file = open('testfile.txt', 'w')file.write('This is a test')
file.write('To add more lines.')file.close()
  • open()函数中还是三个参数,其他都一样,除了要把第二个参数改成“w”,表示write,即以写入的模式打开文件。
  • ==注:==1、write()函数写入文本文件的也是字符串类型。2、在’w’ 和’a’模式下,如果你打开的文件不存在,那么open()函数会自动帮你创建一个

5、关闭文件

当操作完成之后,使用file.close()来结束操作,从而终结使用中的资源,从而能够释放内存。

  • 至于为啥要关闭文件呢?原因有两个:1、计算机能够打开的文件数量是有限制的,open()过多而不close()的话,就不能再打开文件了。2、能保证写入的内容已经在文件里被保存好了。

补充:

为了避免打开文件后忘记关闭,占用资源或当不能确定关闭文件的恰当时机的时候,我们可以用到关键字with,举例如下:

# 普通写法
file1 = open('abc.txt','a')
file1.write('张无忌')
file1.close()# 使用with关键字的写法
with open('abc.txt','a') as file1:
#with open('文件地址','读写模式') as 变量名:#格式:冒号不能丢file1.write('张无忌') #格式:对文件的操作要缩进#格式:无需用close()关闭

6、总结:

1、打开文本文件:

fh = open('hello.txt', 'r')

2、读取文本文件:

fh = open('hello.txt', 'r')
print(fh.read())

3、将新的信息写入文本中、并擦除原来的信息:

fh = open('hello.txt', 'w') fh.write('Put the text you want to add here')
fh.write('and more lines if need be.') fh.close()

4、在现存的文件中加入新的内容、不会擦除原来的内容:

fh = open('hello.txt', 'a')
fh.write('We Meet Again World')
fh.close()

python中文件读写--open函数详解相关推荐

  1. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

  2. python中plt定义,对Python中plt的画图函数详解

    1.plt.legend plt.legend(loc=0)#显示图例的位置,自适应方式 说明: 'best' : 0, (only implemented for axes legends)(自适应 ...

  3. Python操作文件之open函数详解

    Python的open函数详解 open(file, mode='rt', encoding=None) -> BaseIO mode参数详解: 字符 含意 'r' 读取(默认) 'w' 写入, ...

  4. python中内置数学函数详解和实例应用之三角函数_初级阶段(二)

    学习目标: 利用python进行三角函数运算 学习内容: python中的三角函数合集和应用实例 转载请注明出处! 学习产出: 环境:python 3.7, 利用shell进行实例操作. Note: ...

  5. python数据库文件读写(超详解)

    目录 一:文件读写流程 二:函数open()中参数mode最常见的6种模式 三:读取文件三大方法的区别 四:超大文件高效处理 思维导图: 1.文件读写流程:                 (1):第 ...

  6. [转载] Python 中reduce()与lambda函数详解

    参考链接: Python中的reduce a = [2,22,222] Sn = reduce(lambda x,y:x+y,a) print "计算和为:",Sn reduce( ...

  7. python中input()函数详解

    1.input()函数赋值后数据在python内部的类型. if __name__=="__main__":a=input()print(type(a))b=input()prin ...

  8. python中内置数学函数详解和实例应用之三角函数曲线_初级阶段(三)

    学习目标: 利用matplotlib 和 numpy 画三角函数曲线 学习内容: 正弦,余弦,正切,余切函数曲线 双曲正弦,双曲余弦,双曲正切,双曲余切函数曲线 反正弦,反余弦,反正切,反余切函数曲线 ...

  9. Python中的select、epoll详解

    Python中的select.epoll详解 文章目录 Python中的select.epoll详解 一.select 1.相关概念 2.select的特性 1.那么单进程是如何实现多并发的呢??? ...

最新文章

  1. 任天堂经典拳击游戏可以体感操作了,打开网页就能玩,击败泰森不是梦
  2. 无法打开物理文件“E:\Database\VRVIES6841-FZ01-Global\VRVEIS.mdf”。操作系统错误 5:“5(拒绝访问。)”...
  3. oracle中having作用,oracle中having与where的区别
  4. 【C/C++】一篇文章教你区分数组指针指针数组
  5. 概率论经典问题 —— 三个事件 A、B、C 独立 ≠ 三个事件两两独立
  6. Android Baseline小tip
  7. 使用Hibernate SQLQuery(转)
  8. 更改以太网共享属性家庭网络连接值,解决电脑笔记本连接校园网显示无internet无法开热点或开热点手机无ip分配问题
  9. 如何申请一个教育邮箱
  10. 微信小程序(一):霍兰德职业兴趣测试、心里测评、性格测评(含可用完整代码)
  11. 海南信用社计算机试题,2015年海南农村信用社考试试题——计算机基础知识一...
  12. c语言商场收款程序,c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式...
  13. 删除带头结点的单链表的奇数结点
  14. 易语言调用大漠插件实现多线程后台绑定游戏窗口和打怪
  15. matlab cbfreeze,Matlab:如何在同一图中为不同的表面指定不同的色图/色块
  16. LintCode 2017 光棍节
  17. 访问twitter_从命令行访问Twitter
  18. 《A Metric Learning Reality Check》笔记
  19. C语言递归的理解与应用
  20. 每日一篇机器学习公众号D3-字节跳动安全Ai挑战赛-小样本赛道方案总结

热门文章

  1. i技术会 | 大数据应用与数据中台实践
  2. 05-网络的四层协议和七层协议
  3. linux学习之路【一】
  4. 我的世界服务器伤害增加bug,我的世界服务器遇到重大BUG的解决方法分享
  5. Centos7普通用户java命令使用80等小于1024的端口
  6. 腾讯云GPU云服务器产品概述和产品优势,GPU计算型应用场景
  7. Spring事务原理深入解析(AOP,Threadlocal, 隔离级别,传播级别)
  8. 个人简历管理系统(6)-登陆与注册后端实现
  9. 设计模式——简单工厂、工厂方法和抽象工厂的区别与联系
  10. linux系统mysql服务启动失败