1、使用open方法打开、新建文件。
其格式为:
open(file,mode='r',buffering=-1)
---参数说明:
---file:含路径的文件名。当前路径时可只给出文件名。
---mode:文件打开的模式。可以是:
b:二进制形式(缺省时以文本形式)
r:只读方式。文件必须存在
w:只写方式。文件存在则覆盖;文件不存在则创建
+:更新方式(可读写)。需与a、r或w结合使用
a:追加方式(数据只能添加到文件尾),文件不存在则创建
***以上模式可以结合。模式共包括:r,rb,w,wb,a,ab,r+,rb+,w+,wb+,a+,ab+
---buffering:缓冲方式。设置为0时不使用文件缓冲,直接读定磁盘。一般使用默认值-1
示例:
f=open("D:\docs\inf.txt",'r')
g=open("datas.dat",'wb')
---计算机中文件分为二类:
---文本文件,即ASCII文件,存储的是字符,一个字符占一字节。由于数据在内存中是以二进制形式存储的,因此,读写这类文件需进行类型转换。
---二进制文件,存储二进制数据。
---文件打开后,读写完成必须关闭。方法:调用文件对象的内置函数close()。
2、从文件读取数据的主要方法
---使用read方法
---格式:read([size])
---作用:从文件当前位置读取size字节。不指定size时读取全部数据。
示例:
f=open("a.txt") #以只读方式打开文本文件
print(f.read(4)) #读取前4个字节并显示
print(f.read()) #读取剩余的全部字节并显示
f.close()
---使用readline方法
---格式:readline()
---作用:从当前位置读取一行数据(包括回车符“\n”)
示例:
f=open("a.txt")
s=f.readline()
while s:
print(s,end='') #注意:s末尾已有换行符
s=f.readline()
f.close()
---使用readlines方法
---格式:readlines()
---作用:读出所有行。返回的是以行为元素的列表。注意与read()的区别。
示例:
f=open("a.txt")
s=f.readlines()
for r in s:
print(r,end='') #注意:r末尾已有换行符
f.close()
---使用文件对象(是可迭代对象)
f=open("a.txt")
for r in f:
print(r,end='') #注意:r末尾已有换行符
f.close()
3、当文件以写方式打开时,可以使用以下方法将数据写入文件:
---write方法
---格式:write(str)
---作用:将数据写入文件。对于二进制文件,str必须bytes。对于文本文件,str必须是字符串。
---返回值:成功写入的字节数。
示例:
f=open("C:\a.txt","w")
f.write("abcde")
f.close()
f=open("C:\x.txt","bw")
f.write(b'ÖÐÄÏÁÖÒµ¿Æ¼¼´óѧ')
f.close()
---writelines方法
---格式:writelines(line)
---作用:将多行数据写入文件。
示例:
f=open("C:\x.txt","w")
f.writelines(['a','b','c']) #以行为列表元素
f.close( )
---print函数
---格式:print(*obj,sep=' ',end='',file=sys.stdout)
---作用:在文件file上输出obj指定的数据。默认文件是标准输出文件(显示器)。
示例:
f=open("C:\x.txt","w")
print("How are you",file=f)
f.close()
4、文件定位
默认情况下,文件的读写操作都是连续的,程序总是从上一次读写的位置继续向下进行读写操作。同时,文件对象也提供了获取、改变文件读写位置的方法:
---tell():获取文件当前读写位置。如:
f=open("inf.txt")
print(f.tell()) #输出文件读写的起始位置:0
a=f.read(5) #从当前读写位置读取5个字节的数据
print(f.tell()) #输出当前读写位置:5
f.close()
---seek(offest,from):定位文件读写位置。
---参数offest指定需要移动的字节数
---参数from指定移动的开始位置。可以是:
---0:文件头
---1:当前位置
---2:文件尾
***对于以文本方式打开的文件,from只能为0。否则触发错误。
示例:
f=open("a.txt","rb")
f.seek(-5,2)
a=f.read(5)

