python第八天 文件操作
- 文件操作
操作流程
- 打开 f.open()
- 操作
- 关闭 f.close()
1.打开文件方法 open(url,r/w/a)方法
url 为文件位置位置 r读模式 w为写模式 a模式(append)在后面添加
读操作
f=open("小重山","r",encoding="utf-8") #获取文件句柄
print(f.read())
print(f.read(5)) #.read(x) x不添加默认,读取全部数据,x=5读取前五个字符
f.close()
运行结果:
昨夜寒蛩不住鸣。
惊回千里梦,已三更。
起来独自绕阶行。
人悄悄,帘外月胧明。
白首为功名,旧山松竹老,阻归程。
欲将心事付瑶琴知音少,弦断有谁听。
print(f.read(5)) 运行结果:昨夜寒蛩不
写操作
#为w模式,则清空原文本内容,重新写入内容
f=open("小重山","w",encoding="utf-8") #获取文件句柄,为write模式,同时清空小重山文件内的内容
f.write("hello word alex")
f.close()
# 运行结果:小重山内只有"hello word alex"
#为a模式,则在原文本内容后面append()加入字符串,原文本内容不清除
f=open("小重山","a",encoding="utf-8")
f.write("hello word alex\n")
# 运行结果:昨夜寒蛩不住鸣。
# 惊回千里梦,已三更。
# 起来独自绕阶行。
# 人悄悄,帘外月胧明。
# 白首为功名,旧山松竹老,阻归程。
# 欲将心事付瑶琴。
# 知音少,弦断有谁听。
# hello word alex
2.文件操作2,用readline()和readlines()读取文件
readline()
#读取行 f.readline() 默认读到\n换行符
f=open("小重山","r",encoding="utf-8") #获取文件操作句柄,为read模式
print(f.readline()) #读取行,f.readline(),光标挪到最后 昨夜寒蛩不住鸣。
print(f.readline()) #读取下一行 惊回千里梦,已三更。
f.close()
readlines()
#读取所有行 f.readlines() 输出数据类型为列表
f=open("小重山","r",encoding="utf-8") #获取文件操作句柄,为read模式
print(f.readlines()) #读取所有行 并读取换行符
#['昨夜寒蛩不住鸣。\n', '惊回千里梦,已三更。\n',
# '起来独自绕阶行。\n', '人悄悄,帘外月胧明。\n',
# '白首为功名,旧山松竹老,阻归程。\n', '欲将心事付瑶琴。\n',
# '知音少,弦断有谁听。\n', 'hello word alex\n']
在第六行添加helloword
f=open("小重山","r",encoding="utf-8") #获取文件操作句柄,为read模式
data=f.readlines()
a=0
for i in data: #不加.strip(),当打印时读取到列表中的换行符\n,会有空行,
a+=1
if a==6:
i="".join([i.strip(),"helloword"])
print(i.strip())
昨夜寒蛩不住鸣。
惊回千里梦,已三更。
起来独自绕阶行。
人悄悄,帘外月胧明。
白首为功名,旧山松竹老,阻归程。
欲将心事付瑶琴。helloword
知音少,弦断有谁听。
3.文件操作3 高阶玩法(文件基本操作)
1.f
f=open("小重山","r",encoding="utf-8")
a=0
for i in f: #for循环将f对象做成一个迭代器,用一个取一个,
a += 1
if a == 6:
i = "".join([i.strip(), "helloword"]) #规定文件一行行拿
print(i.strip())
2.调整光标位置 f.seek(0)
f=open("小重山","r",encoding="utf-8")
print(f.tell()) #显示光标位置
print(f.read(2))
print(f.tell()) #一个中文占三个字符
f.seek(0) #调整光标的位置到0
print(f.read(4))
运行结果:
0
昨夜
6
昨夜寒蛩
4.f.flush() 将缓存存放到文件中 可以用来写进度条
#f.flush()
import sys,time
for i in range(30):
sys.stdout.write("*") #将*写入缓存 sys.stdout相当于f
sys.stdout.flush() #将缓存中的数据刷入缓存
time.sleep(0.3)
运行结果间隔0.3秒显示一个*
#f.truncate()
#f.truncate()
f=open("小重山","a",encoding="utf-8")
f.truncate(5) #截断文本中前五个字符并将后面的删除
f.close()
5. 读写模式,写读模式,追加读模式
f1=open("小重山","r+",encoding="utf-8") #读写模式,光标从第一行开始读,从最后一行开始写
f2=open("小重山2","w+",encoding="utf-8") #写读模式,先清空,光标从最后开始写,从第一行开始读
f2=open("小重山2","a+",encoding="utf-8") #写读模式,光标从最后开始写,从第一行开始读
文件操作实例:在第六行添加hello 岳飞
f1=open("小重山","r",encoding="utf-8") #读写模式,光标从第一行开始读,从最后一行开始写
f2=open("小重山2","w",encoding="utf-8") #写读模式,光标从最后开始写,从第一行开始读
number=0
for line in f1:
number+=1
if number==6:
line="".join([line.strip(),"hello\n"])
f2.write(line)
f1.close()
f2.close()
#只能通过复制文件的方法实现
6.with()语句 不用自己关闭文件,可以自动关闭文件(提倡使用)
with open("三级登陆菜单","r",encoding="utf-8") as f_read,open("三级登陆菜单","w",encoding="utf-8") as f_write: #后面可以不用使用f.close
for line in f

浙公网安备 33010602011771号