码迷,mamicode.com
首页 > 编程语言 > 详细

python之路-09-文件操作

时间:2017-11-26 15:03:35      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:操作   rip   continue   second   tab   style   pre   find   位置   

9.1文件操作流程

1.打开文件,得到文件句柄并赋值给一个变量

2.通过句柄对文件进行操作

3.关闭文件

9.2 文件读写及关闭操作

#!Author:lanhan
#data = open("yesterday",encoding="utf-8").read()
#f =  open("yesterday",‘w‘,encoding="utf-8")  #文件句柄,也就是内存对象
f =  open("yesterday",‘a‘,encoding="utf-8")
#读文件,默认是r(读)[文件读一次后,再读第二遍时从内容最下面继续读],w(写,覆盖原文件),a(在源文件基础上追加).一次操作要么是读,要么是写,不能同时进行
#data = f.read()
#print(data)
f.write("\n我爱北京天安门。。。。。。。\n")   #\n换行
f.write("天安门上太阳升。。。。。。。。。")      #写文件就是覆盖原来文件,写一个新文件
f.close()   #关闭文件

 

扩展:

#f =  open("yesterday",‘r+‘,encoding="utf-8")   #r+ 读写(可读可追加写)
#f =  open("yesterday",‘w+‘,encoding="utf-8")     #w+ 写读(创建新文件追加写,源文件不能读,只能读新创建的文件)
#f =  open("yesterday",‘a+‘,encoding="utf-8")     #a+ 追加读写
print(f.readline())
print(f.readline())
f.write("--------diao-----------1\n")
f.write("--------diao-----------1\n")
f.write("--------diao-----------1\n")
print(f.tell())
f.seek(10)
print(f.readline())
f.write("should be at the begining of the second line")
f.close()
#f =  open("yesterday",‘rb‘)    #二进制文件格式读文件(网络传输、视频等)
f =  open("yesterday",‘wb‘)    #二进制文件格式写文件(网络传输、视频等)

f =  open("yesterday",ab‘)
f.write("hello binary\n".encode())  #.encode()将字符串转换成二进制
f.close()

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  • rU
  • r+U

 

 

9.3 循环读

#!Author:lanhan
f =  open("yesterday",‘r‘,encoding="utf-8")
#读取前5行(若是到第10行停止,加一个判断即可)
#for i in range(5):
    #print(f.readline())

‘‘‘#ow loop
#读取文件的每一行(方法1和方法2,是将文件全部读取到内存中,当数据量较大时,则内存可能被撑爆)
#for line in f.readlines():   #方法1
    #print(line)
#方法2
for index,line in enumerate(f.readlines()):
    if index == 9:
        print(‘-----我是分割线----------‘)
        continue
    print(line.strip())
‘‘‘
#方法3(high bige)  读一行,保存一行到内存中,再大数据也不怕
count = 0
for line in f:
    if count == 9:
        print(‘------我是分割线--------‘)
        count += 1
        continue
    print(line)
    count +=1

9.4 文件高级操作

#!Author:lanhan

f =  open("yesterday",‘r‘,encoding="utf-8")
print(f.tell())
print(f.readline())
print(f.tell())
print(f.readline())
print(f.readline())
print(f.tell())     #打印当前指针位置
f.seek(10)            #查找指针位置10,0是文件开头
print(f.readline())

#f.detach()   #文件编辑过程中,改变编码
#print(f.fileno())#返回内存地址编号
#print(f.seekable())  #判断指针是否能移动,能移动返回为true(d打印机不能移动)
print(f.encoding)   #打印文件编码
print(f.name)   #打印文件名
print(f.writable()) #判断文件可写
print(f.flush())    #文件写是先写到内存中,然后内存达到一定值后,才写进硬盘中,flush将写入内存中的内容,强制刷新到硬盘
import sys,time
for i in range(20):
    sys.stdout.write("#")
    sys.stdout.flush()
    time.sleep(0.1)

f =  open("yesterday",‘a‘,encoding="utf-8")
#f.write("妹妹的")
f.seek(10)
f.truncate(20)  #从指针位置往后截断10个字符,指针前面内容保持不变(为空,清空文件)

 技术分享图片

 

 技术分享图片

 

 

9.5 文件修改

#!Author:lanhan
‘‘‘
f = open("yesterday","r",encoding="utf-8")
f_new = open("yesterday.bak","w",encoding="utf-8")
for line in f:
    if "肆意的快乐等我享受" in line:
        line = line.replace("肆意的快乐等我享受","肆意的快乐等lanhan享受")
    f_new.write(line)
f.close()
f_new.close()
‘‘‘
import sys
f = open("yesterday","r",encoding="utf-8")
f_new = open("yesterday.bak","w",encoding="utf-8")
find_str = sys.argv[1]
replace_str = sys.argv[2]
for line in f:
    if find_str in line:
        line = line.replace(find_str,replace_str)
    f_new.write(line)
f.close()
f_new.close()

 

扩展:

#!Author:lanhan
with open("yesterday","r",encoding="utf-8") as f:   #当with代码块执行完毕时,内部会自动关闭并释放文件资源
    for line in f:
        print(line)
‘‘‘
#with又支持同时对多个文件的上下文进行管理
with open("yesterday","r",encoding="utf-8") as f1, \    #官方建议一行代码不超过80字符,多行时用\
      open("yesterday2","r",encoding="utf-8") as f2
pass
‘‘‘

python之路-09-文件操作

标签:操作   rip   continue   second   tab   style   pre   find   位置   

原文地址:http://www.cnblogs.com/decorator/p/7898811.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!