admin 管理员组文章数量: 887006
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、用户登录认证程序
本文标签: python 入门学习 Day 4
版权声明:本文标题:python 入门学习 Day 4 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732355058h1534192.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论