python基础-文件操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础-文件操作相关的知识,希望对你有一定的参考价值。
#######python基础-文件操作######## # 1、请问什么文件? 文件其实就是一个虚拟的单位,为什么这么说?是什么时候才有了文件的概念(我说计算机哈),是有了操作系统之后, 操作系统把硬盘上的数据,整理成一个一个文件,便于用户方便操作。是不是没有操作系统,你想怎么去操作文件呢? 哈哈,你手动去计算机硬盘自己去刻读,但是你知道你想操作的数据在哪里嘛?不知道对吧。 # 2、比如pycharm解释器吧,它想操作一个文件的读写,请问它能自己去操作嘛? 答案是不能,一个应用软件可以直接操作计算机硬件?那请问它是怎么才能操作硬盘上的数据。这么说吧,操作计算机硬件 的只有操作系统才可以,所以一个应用软件想要操作硬盘上的数据,必须通过操作系统才行,然后让操作系统去帮你读写数据。 在python中,怎么去操作硬盘上的文件呢?(其实是让操作系统帮你操作) open这个方法 f = open(‘a.txt‘,mode=‘rt‘) # 打开a.txt文件,只读t模式 # 上面那个代码请问执行了哪些操作? # 首先执行open函数对吧,执行这个函数,就是让python解释器向操作系统发出一个请求,说帮我打开a.txt这个文件 # 此时操作系统的内存中是不是有一份对a.txt文件操作的内存。 # 执行完open函数,它有一个差不多文件对象的返回值,赋值给了f,这是不是变量的赋值操作。 # 那么就会python解释器的内存中,开辟一个名称空间,将f扔进去,f后面对应的是函数返回值的内存地址对吧。 ### 总结:是不是在python解释器内有一份对a.txt文件操作的内存,在操作系统中是不是也有。 执行f.read() # 上面说了f就是一个对象,它下面就会有一些列的方法对吧 # f.read()执行这句代码,又做了些什么操作,想一想? # python解释器向操作系统发出一个读的指令,操作系统就去硬盘中读取到操作系统的内存中 # 再由操作系统读取到python解释器内存中。 # 注意一下,这个f是不是没有执行解码格式,那么操作系统就会以默认的字符编码去解码(gbk),如果你的文件是以gbk的话,也可以不用指定 # 但是最好还是指定一下,避免出错。encoding=‘utf-8‘ # f.close() # 这句代码是向操作系统发出可以关闭文件的请求,操作就会关闭对a.txt的编辑操作。 # 注意:很多人都是忘记写f.close(),就算不写我程序也不错报错,干嘛不写啊。 # 对,你程序是不会出错,你py文件执行完毕之后,python解释器就是自动释放内存,垃圾回收机制嘛, # 但是你在操作系统里的这份资源谁去回收(操作系统可能过一段时间会清理),最好你用完了对该文件的操作, # 习惯性的把操作系统的资源也即是释放。 上面说了一大堆,就是让你每次open一个文件,记得写close。 # 思考? f = open(‘a.txt‘,‘rt‘,encoding=‘utf-8‘) data = f.read() f.close() print(f) print(f.read()) # 请问上面代码执行结果,为什么 下面写下对文件的操作,无非就是读写吧。 f = open(‘a.txt‘,encoding=‘utf-8‘) # 上面没写对文件的操作和对文件内容格式操作,默认为读(r),文本模式(t),文本模式就是字符串格式嘛 f = open(‘a.txt‘,‘w‘,encoding=‘utf-8‘) # 上面没写对文件内容格式操作,那默认就是文本模式呗(t) 对文件操作: # r 只读模式 # w 只写模式 # a 只追加模式 对文件内容格式操作 # t 文本模式(str) # b 二进制模式(bytes) 只读模式,下面的方法: f = open(‘a.txt‘,‘rt‘,encoding=‘utf-8‘) f.readline() #只读一行 f.read() #读全部内容 f.readlines() #也是读全部内容,但是他的返回值一个列表,列表里的元素是每一行内容 f.readable() #是否可读 f.writable() #是否可写 只写模式,下面的方法: f = open(‘a.txt‘,‘wt‘,encoding=‘utf-8‘) f.write() #写内容 f.writelines() #也是写,但是参数是一个可迭代的,就和上面readable一样,每个元素最为一行 f.readable() #是否可读 f.writable() #是否可写 只追加模式: f = open(‘a.txt‘,‘at‘,encoding=‘utf-8‘) f.write() #追加,就是在文件最后开始写 对文件内容格式操作: t,b模式就不再多说了,读出来的是二进制,或者字符串,写进去的是二进制或字符串 # 注意:数据在硬盘保存的是二进制,所以你在使用b模式的时候,就不要写encoding参数了 # 还有就是t,b模式不能单独使用,必须配合a,w,r 忘了with这个方法 with open(‘a.txt‘,‘rb‘) as f: pass with的功能就是你在它的代码块里写代码,写完了之后,就不需要执行f.close(),他会自动帮你执行 对了,你可以多打开几个文件,用逗号区分,比如 with open(‘a.txt‘,‘rb‘) as f,open(‘b.txt‘,‘‘rb) as f2: pass
以上是关于python基础-文件操作的主要内容,如果未能解决你的问题,请参考以下文章