f = open('课堂练习.txt','w',encoding='utf-8')
names = ['sherry','nacy','jason']
如果需要把每个都写入进去,用write的话,需要用for循环才能写进去,
如果用writelines的话会直接写入,也就是说,writelines内部给做个循环写入了。如下:
如果写一个字符串的话,用write一下子写入进去,所以效率高,因为用writelines的话会把字符串一个一个的字母循环写入,效率低。
for name in names:
f.write(name)
f.writelines(names)
写入之后,打开文件发现没有写入成功的问题:原因是写文件的时候,先写入到内存的缓冲区,当缓冲区满了之后才会写入到磁盘里。
f.flush()#写入文件后,立即把缓冲区里的内容写到磁盘里
with 不需要自己关闭文件了,with 可以打开多个文件,as +文件名后面加逗号即可
with open('课堂练习.txt','w',encoding='utf-8') as f,open('课堂练习1.txt','w',encoding='utf-8') as f1:
f.write('Cindy')
rb,wb,ab 图片,视频,音频等文件是二进制的东西,打开方式需要加上b,b意思是bytes,以二进制类型打开
写代码从网上获取图片
import requests
url ='http://e.hiphotos.baidu.com/image/pic/item/b03533fa828ba61eac1f59ef4834970a314e5978.jpg'
img =requests.get(url).content
f = open('img.jpg','wb')
f.write(img)
文件内容替换:简单粗暴的方法就是:读出来然后字符串替换
with open('geci.txt','a+',encoding='utf-8') as f:
f.seek(0)
all = f.read() #读完文件,指针在最后了
new_all=all.replace('一','二') #字符串是不能修改的,所以要赋值给一个新的变量
f.seek(0)
f.truncate()#清空
f.write(new_all)
f.flush()
高效的处理办法:读一行处理一行
import os
with open('geci.txt','a+',encoding='utf-8') as f,open('.geci.bak','a+',encoding='utf-8') as f2:# geci.bak前面加.是隐藏文件
f.seek(0)
for line in f:
new_line= line.replace('歌','ge')
f2.write(new_line)
os.remove('geci.txt') #删除原文件
os.rename('.geci.bak','geci.txt') #改名字