博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python之路-09-文件操作
阅读量:7179 次
发布时间:2019-06-29

本文共 3247 字,大约阅读时间需要 10 分钟。

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
'''

转载于:https://www.cnblogs.com/decorator/p/7898811.html

你可能感兴趣的文章
echo命令小解
查看>>
服务器重启的因素
查看>>
Why Ceph and how to use Ceph?
查看>>
几款磁力搜索引擎,找资料更方便
查看>>
C#当中的多线程_任务并行库(上)
查看>>
zencart只有购买过此产品的客户才能评价产品
查看>>
这样学习C语言最有效(高级技巧)——共勉
查看>>
selenium学习(三)-定位页面元素(Target)
查看>>
开发Servlet的方法(2)
查看>>
BZOJ3790:神奇项链(Manacher)
查看>>
USACO翻译:USACO 2014 MARCH Silver三题
查看>>
新技能四步走
查看>>
C# 字符串长度不够补零
查看>>
零基础入门深度学习(3) - 神经网络和反向传播算法
查看>>
三种HTML列表
查看>>
优秀电子工程师成长之道【转】
查看>>
南阳106--背包问题
查看>>
ObjectInputStream&ObjectOutputStream工具类
查看>>
shiro笔记
查看>>
自定义表单-列表基本描述与定义
查看>>