三步骤
1、采用open打开文件,获取读取文件句柄 f=open('test','w',endcoding='utf-8')
2、对文件进行操作 f.wirte("hello world")
3、关闭文件 f.close
写文件的时候先写到缓存在写到磁盘
比如:f.wirte('1111')
tim.sleep(3)
先执行完成休眠时间再写到磁盘
4、三种读写方式r,w,a(追加)
5、常用方法:
readline()读一行
resdlines()读多行
6、for内部将f对象整体做成一个迭代器,用一个取一个,这样文件就放再磁盘上边不占用内存
for i in f:
print(i.strip())
7、f.tell()识别光标所在的位置
print(f.tell()) #光标所在的位置
print(f.read(4))#一个英文占用一个字符,中文也是一个占用一个字符
print(f.tell()) #一个英文占用一个字符,中文则认为一个字符是三个字符,如果是英文则结果是4,如果是中文则是12
8、f.seek(1)。把光标放到1的位置,这里的字符和read的字符计数一样的,一个中文是一个字符,一个英文也是一个字符
f.seek(0) #指到光标定位的位置
print(f.read(2))
f.close()
9.f.flush将缓存数据写到磁盘上边
for i in range(30):
sys.stdout.write('*')
sys.stdout.flush() #将缓存的数据写到磁盘
time.sleep(2)
for i in range(30):
print('*',end='', flush=True)
10.f.truncate(3)截取前三个字符
f.write("hello world")
f.truncate(3)
f.write("222")
11.r+ 读写模式
f = open('test2.txt','r+', encoding='utf-8')#可以先读取到上边的内容再进行写入,写入的时候在最后边写,并不会覆盖原本存在的内容
with open('rr', 'r+') as f: f.write('xxx') f.flush() print(f.readline()) #lo
如果直接先写就把前面的三个字符(hel)覆盖了,再读就是从写的最后一个字符开始读即打印出来是lo
print(f.readline())
f.write('333')
print(f.readline())
f.close()
12.w+写读模式
f = open('test2.txt','w+',encoding='utf-8')#写光标一直在最后一个位置,所以每次写的时候都会清空,写完后光标还在最后一个位置需要调整光标位置才能读取到内容
print(f.readline())
f.write("hello")
print(f.readline())
f.seek(0)
print(f.readline())
13.a+模式
f = open('test2.txt','a+',encoding='utf-8')#写光标一直在最后一个位置,每次写的时候不会清空,写完后光标还在最后一个位置需要调整光标
f.write('666')
print(f.readline())
f.seek(0)
print(f.readline())
重点:每次写的时候只能在最后写,因为磁盘的分配就是这样子,不能在中间进行插入,要想在中间进行插入需要复制一个新的文件,中插入的过程中进行修改
14.with
with open('test1','r', encoding='utf-8') as f:
f.readline()
print(f.readline())
打开多个对象
with open('test1', 'r', encoding='utf-8') as f1 ,open('test2.txt', 'w', encoding='utf-8') as f2:
pass