1.文件操作
使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了.
2.r(只读) 一次性读完
设一个变量f , f 叫文件句柄,我们通过这个句柄去操纵这个文件.例如:
f = open("文件名",mode="r",encoding="utf-8")
content = f.read() 从文件中读取到数据,交给前面的content.
print(content)
f.close()
rb 读取字节
f = open("文件名",mode="rb")
content = f.read() rb读出来的数据是bytes类型,在rb模式下不能选择encoding字符集.
print(content)
f.close()
绝对路径:从磁盘根据目录寻找文件.
相对路径:相对于你当前文件所在的位置
从当前文件夹找到另一个文件夹中的内容
1.从当前文件夹出去: ../ 表示出去.
f = open("../文件夹名/文件名",mode= "r",encoding="utf-8")
content = f.read()
print(content)
f.close()
从当前文件夹向里面走:文件夹名字.
read(n) 读取n 个字符.
f = open("文件名",mode= "r",encoding="utf-8")
c = f.read(2) read()读取字符
print(c)
f.close()
f = open("文件名",mode="rb")
content = f.read(3) 这里读的是字节
print(content)
f.close()
readline 一行一行的读取
f = open("文件名",mode="r",encoding="utf-8")
c = f.readline()
print(c)
f.close()
换行符:
strip()可以去掉左右两端的 和空格
readlines()将每一行形成一个元素,放到一个列表中,一次读完.不建议用.
f = open("文件名",encoding="utf-8")
a = f.readlines()
for line in a:
print(line)
f = open("文件名",mode="r",encoding="utf-8")
for line in f: 直接获取到每一行数据
print(line) 文件句柄是一个可迭代对象
f.close()
f = open("文件名",mode="w",encoding="utf-8")
f.write("要写的内容")
f.flush() 刷新管道
f.close()
在w模式下,向文件中写入内容,这个时候会删除原文件中的内容,写入新内容. 且在w模式下去读会出错.
f = open("文件名",mode="wb")
f.write("金狮子".encode("utf-8")
f.flush()
f.close()
追加 (a,ab)
在追加模式下,我们写入的内容放在末尾.
f = open("文件名",mode="a",encoding="utf-8")
f.write("内容")
f.flush()
f.close()
读写模式(r+,r+b)
读写模式,先读后写,(正常的用法)
f = open("文件名",mode="r+",encoding="utf-8")
content = f.read()
print(content) 先去写再去读是正常用法,写的内容会把原文件覆盖.
f.write("要写的内容")
f.flush()
f.close()
写读(w+,w+b)
先将所有的内容清空,然后写入,最后读取.但是读取的内容是空的,不常用.
追加 (a+)a+模式下,不论先读还是后读都是读取不到数据的.
f = open("文件名",mode="r+",encoding="utf-8")
content = f.read() 现在光标是在最后
f.seek(0) 移动光标 光标又重新回到起点
c = f.read()
print(content) f.seek(0) 默认到开头
print(c) f.seek(3)移动的是字节单位,如果是中文移动的必须是3的倍数
f.seek(0,2) 移动到结尾 括号中的0是表示偏移量,seek的第二个参数表示的是从哪个位置进行偏移,默认是0,表示开头;1表示当前位置;2表示结尾.
f = open(''文件名",mode="r+",encoding="utf-8")
f.seek(0,2)
f.write("需要写的内容")
f.seek(0)
f.read()
f.flush()
f.close()
tell()使用tell().可以帮我们获取光标在什位置
f = open("文件名","r+",encoding="utf-8")
f.seek(18)
print(f.tell())
f.read()
f.close()
f = open("文件名","r+",encoding="utf")
f.seek(9)
f.truncate() 如果没有参数根据光标的位置,保留前面的内容,删除后面的内容.
f,truncate(9) 如果给了参数,会把文件从头到参数之间的内容保留,其他的全部删除.
f.flush()
f.close()
在r+模式下,如果读取内容,不论读取内容多少,光标显示的是多少,在写入或者操作文件的时候都是在结尾进行操作.
f = open("文件名","r+",encoding="utf-8")
f.read(2) 2个字符
print(f.tell())
f.write("内容") 这样写的内容会在最后
f.close()
with open("文件名",mode="r+",encoding="utf-8")as f:
content = f.read()
print(content) 这里没有写f.close() 可以不关文件,过一段时间自动关.
修改文件:
只能将文件的内容,读取到内存中,将信息修改完毕再放到新的文件里.把新文件重命名.
import os
with open("文件名",mode="r",encoding="utf-8")as f,open("新文件名",mode="w",encoding="utf-8")as f1:
for line in f:
line = line.replace("修改的内容","新内容")
f1.write(content)
os.remove("文件名")
os.rename("新文件名","文件名")