python第八天 文件操作

  • 文件操作

   操作流程

  1.  打开  f.open()
  2.  操作
  3. 关闭    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

  

 


 

posted @ 2021-09-17 21:53  夜神月&l  阅读(67)  评论(0)    收藏  举报