目录
一、文件介绍
1.定义:文本文件,超文本文件,图片,声音,视频,超链接
2.分类:文本文件和二进制文件
3.用作:保存数据
4.操作流程:打开文件,读写文件,关闭文件
二、读写文件简单操作
1.读取文件 read()
file 叫做文件句柄,用来操作文件
格式:file=open('文件路径',mode='模式')
file=open('file/a.txt',mode='r')
ret=file.read()
print(ret)
file.close
2.写文件
file=open('file/b.txt',mode='w')
file.write('aaaa')
file.close#关闭文件
三、文件权限
读操作 | r | 只读模式,读取全部内容,指针放在文件开头 |
rb | 二进制格式只读模式,指针放在文件开头 | |
r+ | 读写模式,指针放在文件开头 | |
rb+ | 二进制格式,读写模式,读取全部内容 | |
写操作 | w | 只写模式,如果文件存在,删除原有内容,重新写入;如果文件不存在,创建新文件 |
wb | 二进制格式,只写模式,如果文件存在,删除原有内容,重新写入;如果文件不存在,创建新文件 | |
w+ | 读写模式,如果文件存在,删除原有内容,重新写入,如果文件不存在,创建新文件;先清空再去读写,先写再读,也读不到任何内容,因为光标在最后面 | |
wb+ | 二进制格式,读写模式,如果文件存在,删除原有内容,重新写入,如果文件不存在,创建新文件; | |
a | 用于文件追加,如果文件存在,将追加内容写到原有内容的后面,不会删除原有内容,如果文件不存在,创建新文件再写入内容。 | |
ab | 二进制格式,用于文件追加,如果文件存在,将追加内容写到原有内容的后面,不会删除原有内容,如果文件不存在,创建新文件再写入内容 | |
a+ | 用于文件读写模式,如果文件存在,光标放在内容的末尾,写入内容,如果不存在,就创建新的文件。光标在写入内容的末尾,所以读取内容什么都读不到 | |
ab+ | 二进制格式,读写模式,如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
四、文件操作
1.读操作
1>read()读取全部内容
file=open('file/b.txt',mode='r')
ret=file.read()
ret1=file.read(3)#指定读取内容的个数
print(ret)
print(ret1)
2>readline() 每次只读取一行
file=open('file/b.txt',mode='r')
ret=file.readline()#只读取一行
print(ret)
3>readlines()能够读取多行内容,打印出来是一个列表
file=open('file/b.txt',mode='r')
ret=file.readlines()#将所有行的内容读取出来保存到一个列表中,每一行作为一个元素
print(ret)
4>循环读取
file是句柄,是一个可迭代的对象,可循环读取文件中的内容,每次读一行
file=open('b.txt',mode='r')
for line in file:
print(line)
2.写操作
1>write()
删除原有内容,重新写入,不会创建新文件
file=open('b.txt',mode='w')
file.write('aaaa')
file.close
结果:
aaaa
2>writelines()
可传递一个可迭代的内容,一次写入多个内容
file=open('file/b.txt',mode='w')
lst=['aaa','bbb','ccc']
file.write(lst)
file.close
结果:
aaabbbccc
3.其他操作
1>tell()
获取文件中当前光标所在位置
file=open('b.txt',mode='r')
ret=file.read(3)
ret1=file.tell()
print(ret1)
结果:
3
2>seek()
移动光标位置
‘r’模式下,seek(a,b)中,第一个参数只能为0.否则报错。
第二个参数为0--------->光标放在开头位置
1---------->光标在当前位置不动
2--------->光标在内容末尾位置
file=open('b.txt',mode='r')
ret=file.read(3)
file.seek(0,2)#光标放再末尾
print(file.read(3))#什么都没有
file.close
file=open('b.txt',mode='rb')
ret=file.read(3)
file.seek(-1,1)
#file.seek(-1,0)#会报错
print(file.read(3))
file.close
解析:
3>name和demo
五、with
使用with,可以不关闭文件,不再写file.close(),他会自动关闭文件
注意:不要出来写文件操作
with open('b.txt',mode='r') as f:
ret=f.read(3)
print(ret)
#print (f.read(3))---->报错
六、乱码
乱码原因:读写不一致操作导致乱码
Windows操作系统默认是GBK
with open('b.txt',mode='w') as f:
f.write('你好世界')#——————报错
解决办法:
指定编码格式:
with open('b.txt',mode='w',encoding='uft-8') as f:
f.write('你好世界')
结果:
你好世界
七、文件操作
OS模块
文件重命名 | os.rename(原文件名,新文件名) |
删除文件 | os.remove() |
创建目录 | os.mkdir ()创建一层目录 |
os.makedirs()创建多级目录 | |
删除目录 | os.rmdir() 删除一层目录 |
os.removedifs() 删除多级目录,只删除空目录 | |
获取当前所在目录 | os.getcwd() |
获取目录列表 | os.listdir() |
切换所在目录 | os.chdir(path+ ' 目录' ) |
判断文件或文件夹是否存在 | os.path.extis() |
判断是否为文件夹 | os.path.isfile() |
判断是否为目录 | os.path.isdir() |
获取绝对路径 | os.path.abspath() |
判断是否为绝对路径 | os.path.isabs() |
获取路径中的最后部分 | os.path.basename() |
获取父目录 | os.path.dirname() |
将多个目录组织成路径返回 | os.path.join() |
获取文件信息 | os.path.getatime()--->最后访问时间 |
os.path.getctime()--->查看创建时间 | |
os.path.getmtime()--->最后的修改时间 | |
os.path.getsize()---->查看文件大小 |