Python从零开始系列连载(32)——Python文件操作(下)

浏览: 5961

前言

【本文授权“Python爱好者社区”微信公众号以本人“王大伟”为作者原创首发】

前文传送门:

Python从零开始系列连载(1)——安装环境

Python从零开始系列连载(2)——jupyter的常用操作(上)

Python从零开始系列连载(3)——jupyter的常用操作(中)

Python从零开始系列连载(4)——jupyter的常用操作(下)

Python从零开始系列连载(5)——Python的基本数据类型(上)

Python从零开始系列连载(6)——Python的基本数据类型(中)

Python从零开始系列连载(7)——Python的基本数据类型(中二)

Python从零开始系列连载(8)——Python的基本数据类型(下)

Python从零开始系列连载(9)——Python的基本运算和表达式(上)

Python从零开始系列连载(10)——Python的基本运算和表达式(中)

Python从零开始系列连载(11)——Python的基本运算和表达式(中二)

Python从零开始系列连载(12)——Python的基本运算和表达式(下)

Python从零开始系列连载(13)——Python程序的基本控制流程(上)

Python从零开始系列连载(14)——Python程序的基本控制流程(中) 

Python从零开始系列连载(15)——Python程序的基本控制流程(中二)

Python从零开始系列连载(16)——Python程序的基本控制流程(下)

Python从零开始系列连载(17)——Python特色数据类型(列表)(上)

Python从零开始系列连载(18)——Python特色数据类型(列表)(中)

Python从零开始系列连载(19)——Python特色数据类型(列表)(下)

Python从零开始系列连载(20)——Python特色数据类型(元组)(上)

Python从零开始系列连载(21)——Python特色数据类型(元组)(下)

Python从零开始系列连载(22)——Python特色数据类型(字典)(上)

Python从零开始系列连载(23)——Python特色数据类型(字典)(下)

Python从零开始系列连载(24)——Python特色数据类型(集合)(上)

Python从零开始系列连载(25)——Python特色数据类型(集合)(下)

Python从零开始系列连载(26)——Python特色数据类型(函数)(上)

Python从零开始系列连载(27)——Python特色数据类型(函数)(中)

Python从零开始系列连载(28)——Python特色数据类型(函数)(下)

Python从零开始系列连载(29)——Python文件操作(上)

Python从零开始系列连载(30)——Python文件操作(中)

Python从零开始系列连载(31)——Python文件操作(中二)


文件写入


之前讲过了文件打开创建和关闭,我们接着来谈谈文件写入


之前我们说了使用open()加上文件的绝对路径或者相对路径可以打开文件


这里我们讲一个更简单的方法


我们导入os模块


os模块是和操作系统相关的模块


在Python中这样操作:


图片.png


这段代码指出了当前的工作目录


我们在学习资料.txt中加入如下内容,并且保存


图片.png


我们在Python中打开这个文件:


图片.png


因为之前指出了当前目录,所以可以给出相对路径即可(学习资料.txt在当前的工作路径)


我们使用read()方法可以读取文本内容


图片.png


我们还可以使用write()方法写入内容:


图片.png


报错啦!这不科学啊!小明,你来解释一下!


小明:老湿,是不是你的文本保存了什么不健康的信息?


小明,你不要把自己的经历经验强加给别人!


小红:老师,上节课说过,默认的打开模式是 r  (只读),所以不能写入.


嗯,小红说的对,我们修改一下,首先关闭文档


图片.png


此时我们打开该txt:


图片.png


内容已经写进去了!


我们在Python中读出来:


图片.png


如果再次读取呢?


图片.png


发现读出来的内容为空!


解释一下,这里的read()方法相当于读取全部内容,如果读完内容,再次读取时候,书签已经在文章末尾,再次往后读当然没有内容啦~


如果我只想读取一行呢?

图片.png


文本一共两行,如果读取完最后一行,再次读取和上面的read()一样,当然没内容啦~


如果我想读取多行呢?


小红:老师,可以使用循环!


很好,我们试试!


图片.png


可是为什么只有第二句被读出来了呢?


因为while中的判断已经执行了一次readline()


而在print()中的readline()执行读出的是第二句


当然,我们可以换成for循环:


图片.png


小明:老湿!如果你不知道有多少行呢?你这样指定读取两次算是作弊!


小明这个问题提的好!我们这里引进一个方便的方法:


图片.png


readlines()方法将每行内容作为列表元素,返回的是一个列表


小明:这个看起来不舒服啊,老湿给改改呗!


小红:老师,我知道怎么改!


图片.png


小红学得很好!


其实,这个还能改的更有派森特色!你们知道怎么改么?


【小明和小红均摇头


是时候展现真正的技术了!


图片.png


小明:老湿,我看懂了!你用的列表生成式,可是为啥你要加个 g = ?


小明今天的问题提的都很好啊!如果不加,我们看看内容


图片.png


会返回列表,而这个列表的元素是None,因为print( ) 函数作为列表的元素是没返回值的


小明:老湿,你说的这个不好理解啊


好的,我们举个栗子:


图片.png


将print()赋值给 i

我们打印 i 发现是None


小明:哦哦哦哦哦~我懂了!


下课

人生苦短,我选Python

未完待续,连载中.....


今日作业:

自己用Python创建一个文件,写一首(手)诗(湿)并且读出来


图片.png


(阿喂!是用Python读,不是让你用嘴读!)


现在还坚持再看连载学习的你们真的很棒棒!

入门部分已经学完大部分啦!加油


下一篇:Python从零开始系列连载(33)——Python异常处理

推荐 4
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

16 个评论

老湿,我出现这个'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence,怎么办
说明有一部分不是gbk编码 你却想用gbk解码 所以报错 你换成utf-8试试
老师我是在mac上进行的,我在读取txt文件的时候没有正常显示文本,所以我用decode想进行转换,但是显示'_io.TextIOWrapper' object has no attribute 'decode' 请问这是为什么?
意思是你想要decode的这个内容没有decode这个方法,你先看看你的内容是什么
import os
os.chdir('D:\\知识.txt')


NotADirectoryError Traceback (most recent call last)
<ipython-input-2-f8363f52477b> in <module>()
1 import os
----> 2 os.chdir('D:\\知识.txt')

NotADirectoryError: [WinError 267] 目录名称无效。: 'D:\\知识.txt'

这是怎么回事?
应该是没这个目录
写 目录 你写的是文件'D:\\知识'
我专门创建的一个文件,
import os
os.chdir ('E:\\Python专用')
f = open ('学习读物.txt','a')
f.write ('山不在高,有仙则名\n水不在深,有龙则灵\n斯是陋室,惟吾德馨\n苔痕上阶绿,草色入帘青\n谈笑有鸿儒,往来无白丁\n可以调素琴,阅金经\n无丝竹之乱耳,无案牍之劳形\n南阳诸葛庐,西蜀子云亭\n孔子云:何陋之有!')
f.close()

f = open ('学习读物.txt')
g = [print (i) for i in f.readlines ()]
文艺一下,哈哈哈
666
老湿
g = [print(i) for i in o1.readlines() ]
为啥这个语法中 o1.readlines()不用加:
因为这不是一般的循环语句 这是列表生成式
import os
os.chdir('D:\\VScode\\Python')
f=open('关雎.txt','w+')
f.write('关关雎鸠,在河之洲。窈窕淑女,君子好逑。\n参差荇菜,左右流之。窈窕淑女,寤寐求之。\n求之不得,寤寐思服。悠哉悠哉,辗转反侧。\n参差荇菜,左右采之。窈窕淑女,琴瑟友之。\n参差荇菜,左右芼之。窈窕淑女,钟鼓乐之。')
f.close()
f=open('关雎.txt','r')
for i in f.readlines():
print(i)
不错
为什么用pycharm直接编辑
[print (i) for i in f.readlines ()]
运行的是正常的,不会返回None,None
可能编辑器之间会有差别

要回复文章请先登录注册