文件
1.只读(r,rb)rb是读字节
2.只写(w,wb)#清除之前的东西,重新写进去内容。
3.追加(a,ab):表示写东西
4.r+ 读写
5.W+ 写读
6.a+ 写读(追加写读)
我们使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了。根据打开方式的不同弄能够执行的操作也会有相应的差异。
f = open(“护士.txt”,mode = "r", encoding="utf-8")
content = f.read() #文件句柄读取内容
print(content)
f.close() #关闭句柄
文件路径
相对路径和绝对路径
相对路径:相对于你当前程序所在的文件夹
绝对路径:1.从磁盘根目录寻找 2.互联网上的一个绝对路径
../ 表示上一层文件夹(相对于当前所在的文件夹)
f = open(“小模特”,mode = “w” encoding=“utf-8”) #w模式,写入之前会清除掉原来的内容,如果是a模式,在原来的基础上进行追加内容
f.write("杜十娘”)
f.flush()
f.close()
rb模式:处理非文本文件使用
f = open(“小护士”,mode = “rb”)
bs = f.read()
print(bs) #打印出来的是字节
print(bs.decode("utf-8")) #需要解码,打印出来的是文件的内容
f.close()
wb模式:处理非文本文件使用
f = open(“小护士”,mode = “rb”)
bs = f.write("你好啊".encode("utf-8"))
f.close()
r+模式:先读后写,R+模式,默认情况下,光标在文件的开头,必须先读后写才是安全的,如果是先写后读,会出错
1. f = open(“老师点名”,mode="r+",encoding = "utf-8")
s = f.read()
f.write("周杰伦”)
print(s)
f.close()
2. f = open("精品",mode="r+" ,encoding = "utf-8")
s = f.read(3) #读3个字符,现在的光标应该在3个字节之后,但是r+模式下,不管你前面读了几个,后面去写,都是在末尾写
f.write(“马虎疼”)#在没有任何操作之前进行写,即在开头写;如果读取了一些内容后在写,写入的是最后。
print(s)
W+模式:w操作清空原来的内容
f = open(“写读”,mode =“w+”,encoding="utf-8")
f.write("今天天气”)
f.seek(0)
s = f.read()
print(s) #移动光标才能打印出来“今天天气”
f.flush()
f.close()
光标:
seek(n)光标移动到n位置,注意,移动的单位是byte,所以如果是utf-8的中文部分要是3的倍数。
移动到开头:seek(0)
移动到结尾:seek(0,2)seek的第2个参数表示的是从哪个位置进行偏移,默认是0,表示开头,1表示当前位置,2表示结尾。
tell()告诉当前光标的位置
#将吃的文件中的肉换成菜,做法是新建吃的副本文件,改完后,把吃的文件删除掉,并将吃的副本文件重命名为吃的。
import OS
with open ("吃的",mode="r",encoding="utf-8") as f1,open("吃的_副本",mode=“w”,encoding=“utf-8”) as f2:
s =f1.read()
ss=s.replace("肉","菜")
f2.write(ss)
os.remove(“吃的”)
os.rename("吃的副本","吃的)
readline()和readlines()
with open ("吃的",mode="r",encoding="utf-8") as f1,open("吃的_副本",mode=“w”,encoding=“utf-8”) as f2:
for line in f1:
s = line.replace("肉”,"菜”)
f2.write(s)