python 入门学习 Day 4

python 入门学习

一周掌握 python 入门知识


学习目标:

1、 文件操作流程
2、文件的创建、只读 和 追加
3、文件的遍历
4、文件的二进制模式
5、文件的混合模式
6、文件的修改


学习内容:

1、 文件操作流程

  • 打开文件 f=open(filename)
  • 写文件 f.write(“内容”)
  • 读文件 f.read()
  • 保存并关闭文件 f.close()
  • 文件打开模式
  • r 只读模式
  • w 创建模式,若文件已存在,则覆盖旧文件
  • a 追加模式,新数据会写到文件末尾
    文件只能以读、创建、追加3种模式中的一种打开文件,不能既写又读

2、文件的创建、只读 和 追加
三种模式:

f=open("name_list", mode="w")

f.write("lisa\n")
f.write("jisoo\n")
f.write("jenne\n")
#print(f.read())  会报错,写的时候不能读

f.close()
f=open("name_list",mode='r')
print(f.readline()) #读一行
print("-----------")
print(f.read()) #读全部
f.close()

(光标问题,之后解释)
运行结果
在这里插入图片描述

f=open("name_list",mode='a')
f.write("rose\n")
# print(f.read()) 会报错,追加时不可读
f.close()

在这里插入图片描述

3、文件的遍历
实际上就是循环文件
在这里插入图片描述

f=open("学生.txt")
for i in f:
    i=i.split()
    grade=i[2]
    if int(grade) >=85:
        print(i)

在这里插入图片描述

4、文件的二进制模式
可以用二进制模式打开图片、视频文件

  • rb 二进制只读模式
  • wb 二进制创建模式,若文件已存在,则覆盖旧文件
  • ab 二进制追加模式,新数据写到文件尾部
#读二进制文件 rb
# f=open("20200218135412_LGNVH.jpeg","rb")
# for i in f:
#     print(i)

#写二进制文件 wb
f=open("wb_file","wb")

s="张三"
f.write(s.encode("gbk"))
#f.write("张三") 会报错,只能拿bytes来写

5、文件的混合模式

  • w+ 模式:创建一个新文件,写一段内容,可以再把写的内容读出来
  • r+ 模式(rw):能读能写,但都是写在文件后,类似于追加;但可以移动光标实现任意位置写入
f=open("学生.txt","r+")
print(f.readline())
print(f.tell())
f.seek(f.tell())
f.write("转校生郑业")

在这里插入图片描述

  • a+ 模式:追加读,一打开时光标在文件尾部,写数据全是追加的形式

name.txt文件
在这里插入图片描述

f=open("name.txt")
f.seek(8) #将光标移动到第6个字节处
print(f.read())

运行结果:
在这里插入图片描述
跳到文件任意位置写

f=open("seek_write","w")
f.write("hello\n")
f.write("world\n")
#f.seek(10)
#print("返回光标当前位置:",f.tell())
f.write("-------\n")
f.write("world\n")
print("返回光标当前位置:",f.tell())
f.close()

运行结果;
在这里插入图片描述
返回光标当前位置: 26

  • def flush(self,*args,**kwargs)#把文件从内存buffer里强制刷新到硬盘
    在这里插入图片描述
    在这里插入图片描述

6、文件修改
像上面的插入新内容会覆盖原来的数据,但正常添加,应该是不影响原数据的

  • 先把所有的数据加载到内存里
  • 在内存中进行修改
  • 修改完再重新写惠硬盘

在这里插入图片描述

f=open("学生.txt","r+")

#加载到内存
data=f.read()
new_data=data.replace("张三","尤克里里")

#清空文件
f.seek(0)
f.truncate() #截断文件

#重新写回硬盘
f.write(new_data)
f.close()

在这里插入图片描述
缺点:文件太大就很慢了,因为从硬盘读到内存就比较慢


学习产出:

练习1、全局文本检索替换
需求:写一个脚本,允许用户按一下方式执行时,即可以对指定文件内容进行全局替换,且替换完毕后打印替换了多少处内容;写完后的脚本调用方式:python your_script.py old_str new_str filename
2、用户登录认证程序
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值