基本的文件操作
什么是文件
文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位
如何使用文件
# open(文件路径) # f = open(文件路径) # print(f) # 可以在文件路径前加r,防止字符转义
read模式打开文件
# f = open(文件路径, mode = 'r') # data = f.read() # print(data) ''' 读取文件内容,向操作系统发起读请求,会被操作系统转成具体的硬盘操作,将内容有由硬盘读入内存 '''
write模式打开文件
# f = open(文件路径, ’w') # f.write(str)
打开文件三步骤
1、打开文件
2、读写
3、关闭文件
绝对路径
Windows系统绝对路径从盘符(C:、D:)开始写一个完整的路径
相对路径
相对于当前执行文件所在的文件夹
推荐使用相对路径
文件三种打开模式
文件操作的三种基础模式
r模式为read(默认)
w模式为write
a模式为append
文件读写内容
t模式为text(默认)
b模式为bytes(二进制文件)
r模式
只读模式,只能读不能写,文件不存在时报错
f = open('file.txt', mode='rt', encoding='utf8') data = f.read() print(data) ''' f.read()读取文件指针会跑到文件的末端,如果再一次读取,读取的将是空格。 由于f.read()一次性读取文件的所有内容,如果文件非常大的话,可能会造成内存爆掉,即电脑卡死。因此可以使用f.readline()/f.readlines()读取文件内容。 readline()只读一行,而每次读取一个字符 readlines()读取整个文件,每次读取一行 for i in f.read(): #循环读出一个一个字符 for line in f: #循环一行一行读出 每一行末尾默认有一个换行 ''' print(f.readalbe()) #判断文件是否可读
w模式
只能写,不能读,文件存在时清空文件再写入内容,文件不存在时创建文件后再写入内容
f = open('file.txt','wt',enconding='utf8') print(f.readable()) f.write('slk') f.close() f = open('file.txt','wb') f.write('中华人民共和国'.encode('unicode_escape')) # 编码成bytes类型 ''' f.writelines(line) #写入列表,自动拼接列表元素(必须是字符串),一行写入 '''
a模式
可以追加,文件存在时则在文件的末端写入内容,文件不存在时则创建文件后再写入内容
f = open('file.txt', mode='at', encoding='utf8') f.write('slk')
文件打开读取二进制
b模式是通用的模式,因为所有的文件在硬盘中都是以二进制的形式存储的,需要注意的是:b模式读写文件,一定不能加上encoding参数,因为二进制无法再编码。
文件的高级应用
''' #r+模式 r+的写入是,光标从头开始,替换字符 #w+ 因为会清空文件,所以和w没有区别 #a+ 默认光标在尾部 '''
三种新模式(不推荐)
#三种模式都是可写可读 #r+模式 ''' 光标在文件头部,覆盖后面的字符 ''' #w+模式 ''' 和w模式没有区别 ''' #a+模式 ''' 默认光标在尾部 ''' #如果真的有需求,使用打开两个文件的方式 ''' import os with open('file_r.txt', 'r', encoding = 'utf-8')as fr,\ open('file_w.txt', 'w', encoding='utf-8')as fw: forline in fr: fw.write() os.remove('file_r.txt') os.rename('file_w.txt', 'file_w.txt') '''
光标的高级应用
#中文字符3个字节,英文字母一个字节 #都需要用b模式打开文件 ''' seek(offset, whence = 0) #offset是光标指针的字节偏移量;whence是位置,默认是在文件头,whence=1表示当前 位置,whence=2表示文件尾 tell() #返回光标当前位置,以字节为单位 truncate(size) #只能使用可写模式打开,但是不能使用w或w+,这样会清空文件;要使用r+或者a或者a+;它会截 断文件,只保留size以内的字节,当size=0时,相当于清空文件 read(n) #读取前n个字符,中文英文都是一个字符,默认读取所有 '''