Python--文件的基本操作,,#!/usr/bin


技术图片
#!/usr/bin/env  python# -*- coding: utf-8 -*-# ******************************一:文件的操作******************************# 1. 打开文件,得到文件句柄并赋值给一个变量# 2. 通过句柄对文件进行操作# 3. 关闭文件# 注意:open()一个文件也就是创建了一个对象,把这个对象赋值给变量f,这样变量f文件之间就建立了引用关系# f = open("a.txt","r")   #打开文件,得到文件句柄并赋值给一个变量;文件路径可以是绝对路径也可以是相对路径# data = f.read()                             #通过句柄对文件进行操作# f.close()                                   #关闭文件# ******************************二:文件的打开方式******************************# 1.文件的打开方式(默认为文本模式t):#               r   以读模式打开文件#               w   以写模式打开文件;如果文件存在,则清空文件,再写入新内容;如果文件不存在则创建文件#               a   以追加模式打开文件(打开文件后,文件光标自动跳转到文件末尾),如果文件不存在则创建文件;注意追加模式下只能进行写操作# f1 = open("f1.txt","r")        #文件不存在则报错# f1.close()# f2 = open("f2.txt","w")        #文件不存在则创建# f2.close()# f3 = open("f3.txt","a")        #文件不存在则创建# f3.close()# 2.非文本文件打开方式:只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的# 字符编码、图片文件的jgp格式、视频文件的avi格式)# 注意:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码#               b   以二进制模式打开文件,而不是以文本模式# f = open("a.txt","rb")# data = f.read()# f.close()# print(data)# 3.读写模式打开文件:#               r+  以读写方式打开文件,可对文件进行读和写操作#               w+  清除文件内容,然后以读写方式打开文件#               a+  以读写方式打开文件,并将文件光标移到到文件末尾# ******************************三:文件的读和写******************************# 1.read():读取文件内容,并返回一个字符串# f = open("a.txt","r",encoding="utf-8")     #以指定的编码格式来编码(打开)文件# data = f.read()         #读取所有内容,光标移动到文件末尾# f.seek(0)               #将文件光标移动到开始位置# data1 = f.read(10)      #read(n),n是字符数,可以指定读取多少个字符# f.close()# print(data,data1)# f1 = open("a.txt","rb")     #b模式下读文件;注意:win操作系统下换行符是:\r\n# data2 = f1.read()# f1.close()# print(data2)# print(data2.decode("utf-8"))    #b模式下查看文件内容,将字节解码为字符串查看# 注意:字符串(内存)------编码encode------字节(硬盘)# 字节(硬盘) ------解码decode------字符串(内存)# 2.readable():文件是否是可读的,返回布尔值# f = open("a.txt","r",encoding="utf-8")# data = f.readable()# f.close()# print(data)# 3.readline():读取一行内容,光标移动到第二行开始# f = open("a.txt","r",encoding="utf-8")# data = f.readline()             #读取一行内容,光标移动到第二行开始# data1 = f.readline(4)           #readline(n),n是字符数,可以指定读取该行多少个字符# f.close()# print(data)# print(data1)# 4.readlines():读取文件中每一行内容,将结果返回一个列表# f = open("a.txt","r",encoding="utf-8")# data = f.readlines()# f.close()# print(data)# 5.write():以字符串的形式写入内容;写入内容时不会添加换行符,需要手动添加# f = open("a.txt","w",encoding="utf-8")# f.write("1111111111\n222\n333\n中国\n")# f.close()# f1=open("b.txt","wb")# #字符串的encode()方法:将字符串编码为字节# f1.write("1111\n222\n".encode(‘utf-8‘))      #b模式中的写,需要指定编码格式,将字符串转换为字节写入;字符串需要手动添加换行符# #bytes函数:将字符串编码为字节# f1.write(bytes("11112222\n",encoding ="utf-8"))# f1.close()# 注意:字符串(内存)------编码encode------字节(硬盘)# 字节(硬盘) ------解码decode------字符串(内存)# 6.writeable():文件是否是可写的,返回布尔值# f = open("a.txt","w",encoding="utf-8")# f.writable()# f.close()# 7.writelines():以列表的形式写入内容;列表元素需要手动添加换行符# f = open("a.txt","w",encoding="utf-8")# f.writelines(["111\n","中国\n"])# f.close()# 8.closed():文件是否是关闭的,返回布尔值# f = open("a.txt","w",encoding="utf-8")# data = f.closed# f.close()# print(data)# ******************************四:文件内光标移动******************************# 光标移动:文件的读和写操作都会使得光标进行移动,比如你read()完文件后,再次read()会获取不到文件内容,因为文件的光标已经在第一次read()时移动到文件末尾了# 注意1:除了read(n)方法光标是以字符进行的,其余的文件内光标移动都是以字节为单位如seek,tell,truncate#           read(3):文件打开方式为文本模式时,代表读取3个字符;文件打开方式为b模式时,代表读取3个字节# 注意2:文本文件在不同操作系统中换行符是不一样的,python再次处理时会将不同的换行符转换为\n,使用newline=""可以显示不转换前的换行符;#       在tell()时,换行符\r\n为两个字节# f = open("test.txt", "r+", encoding="utf-8")# print(f.readlines())# f1 = open("test.txt", "r+", encoding="utf-8",newline="")# print(f1.readlines())# 1.tell():查看文件当前光标的位置(以字节为单位)# f = open("a.txt", "r+", encoding="utf-8")# print(f.tell())# f.readline()# print(f.tell())# 2.seek():控制光标移动字节数#             seek(a,b)     a控制移动的字节数,b = 0(默认为0),表示从文件开头开始计算移动#                                            b = 1,表示从当前光标开始计算移动,此时a为正数表示向后移动;反之则向前移动#                                            b = 2,表示从文件末尾开始计算移动# 注意:只有在b模式下,seek()才可以从后向前开始向前移动# f = open("test.txt", "rb")# print(f.tell())# f.readlines()# f.seek(-5,2)# print(f.tell())# ******************************五:文件的其他注意事项******************************# 1.文件的打开方式有两种:# (1).将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)# (2).将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖原来的文件# 注意:1.以文本模式打开文本文件时,注意要以指定的编码格式来打开文件,该编码格式应该与该文件在内存中加载的编码格式一致# 注意:2.open()函数会检索当前操作系统的编码方式,而不是文件自身的编码方式;open()打开文件默认是r模式# 注意:3.读和写文件的内容必须都是字符串# 2.encoding:取文件打开的编码# f = open("a.txt","w",encoding="utf-8")# print(f.encoding)# 3.flush():用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区;# 一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法;# 即就是更改文件内容后,先关闭文件再重新打开文件文件更改才会看到变换# f = open("f3.txt","w+",encoding="utf-8")# f.writelines(["我爱你中国\n","66666\n"])# f.flush()# f.close()# 4.truncate():文件的截断(写模式进行);无n表示从当前位置截断;截断之后后面的所有字节被删除# f1 = open("a1.txt","r+",encoding="utf-8")# f1.truncate(3)       #truncate(n),从文件的首行首字节开始截断n个字节,只要截取部分,其他部分所有字节被删除# print("a1:",f1.read())# f1.close()## f2 = open("a2.txt","r+",encoding="utf-8")# f2.seek(8)# f2.truncate()       #截断从开头到当前光标位置的内容# print("a2:",f2.read())# f2.close()# 5.with打开文件时,可以不关闭文件# with open("test.txt","a+",encoding="utf-8") as f:#     f.write("world\n")#     print(f.read())
文件

Python--文件的基本操作

评论关闭