文件操作函数

1文件操作函数   open

1. 绝对路径,从磁盘的根目录寻找 或者 从互联网上寻找一个路径
2. 相对路径(用的多). 相对于当前程序所在的文件夹 ../上一层文件夹
r 读
f=open("小护士我爱你.txt",mode='r',encoding="utf-8")
s=f.read()
print(s)
f.close()

通过在相同文件下创建的一个文本形式的内容,利用文本操作open进行查找

open"文件名",mode"模式"encoding'字符集'(utf-8)

f.close #没有这段话,你在下面这个程序删除这个会报错

f=open("小护士我爱你",mode='r',encoding="utf-8")
for line in f:
    print(line.strip())
f.close()

#如果文件太大会严重影响运行内存,所以提到for 

for line in f 是一个可迭代的对象  print(line.strip()) # 一行一行的处理数据

2.w  写  #带w 的 ,只要你操作完了,就会清空源文件  

如果文件不存在,就会新建一个新文件

1 f=open("一次",mode="w",encoding="utf-8")
2 f.write("我爱你
")
3 f.write("一次就好")
4 f.flush()
5 f.close()

# 自己手动换行

f.flush  刷新



3.a 追加模式
1 f=open("一次",mode="a",encoding="utf-8")
2 f.write("我爱你
")
3 f.write("一次就好")
4 f.flush()
5 f.close()

在原有基础上进追加 可重复

4.b模式   非文本文件

rb,wb,ab, 都是bytes  如果处理读取的是非文本文件,mode 有b ,encoding 不写

1 f = open("c:/pdd.jpg", mode="rb") # 这里不能写encoding
2 e = open("e:/pdd.jpg", mode="wb")
3 for line in f: # 从c盘读取 line你是不知道读取了多少数据的
4     e.write(line)   # 写入到e盘
5 f.close()
6 e.flush()
7 e.close()

5. 带加号的

r+ 

读写模式  先读后写
1 f=open("一次",mode="r+",encoding='utf-8')
2 s=f.read(3)
3 print(s)
4 f.write("怒要了
")
5 f.write("怒吃了")
6 print(f)
7 f.flush()
8 f.close()

不论你读了多少内容,光标在哪里,写入的时候都是在结尾写入,除非上来就写入,这是写入实在开头

w+

写读模式,先写后读,

1 很少用. 因为会清空文件中的内容
2 f = open("阿西吧", mode="w+", encoding="utf-8")
3 f.write("张云雷也要退出德云社") # 写完之后光标在最后. 读取是没有内容的
4 f.seek(0) # 移动光标, 移动到开头
5 s = f.read()
6 print("读取的内容是",s)
7 f.flush()
8 f.close()

a+ 模式 

1 f=open("一次",mode="a+",encoding="utf-8")
2 f.write("这个是最后一次")
3 f.seek(0)
4 s=f.read()
5 print(s)
6 f.flush()
7 f.close()

s=f.seek (0)  #这个是将光标移到0位置

光标 

f.seek(3)  #3byte=>中文   都是根据光标位置查找到 f.seek(0) 把光标移动到0  seek(0,2) 末尾 seek(1)当前位置  seek(偏移量,位置)

 1 f=open("一次",mode="r",encoding="utf-8")
2 f.seek(6)
3 for line in f:
4     print(line.strip())
5 
6 f.close()

正常输出的是我爱你通过移动光标到第二个汉字

print  f.tell()    #输出光标位置 

特殊:

truncate() #从文件开头截断到光标位置

truncate(12) 这个12也是type 如果有参数,从头街道参数位置

1 f=open("一次",mode="w",encoding="utf-8")
2 f.write("我是小狗网袜尴尬")
3 print(f.tell())
4 f.truncate(21)
5 f.close()

在写入中 通过截取到第21个字节到第7个字而写入的

   

#####

修改文件

1 import  os
2 with open("一次",mode="r",encoding="utf-8") as f1 ,
3     open("一次_",mode="w",encoding="utf-8") as f2:
4     for line in f1:
5         line=line.replace("小狗","张庆")
6         f2.write(line)
7 
8 os.remove("一次")
9 os.rename("一次_","一次")

不会通过源文件进行写入,因为在w 的时候全部文件都被清空 只能用副本代替

 


原文地址:https://www.cnblogs.com/zhangqing979797/p/9432034.html