文件操作
1.计算机基础2.编程语言和Python语言介绍3.八大基本数据类型4.python语法入门变量和常量5.python和pycharm相关补充6.计算机五大部件补充
7.文件操作
8.编码和解码9.字符编码10.基本数据类型的内置方法11.循坏结构12.流程控制13.基本运算符14.程序与用户交互15.迭代器16.闭包函数17.装饰器18.多层语法糖嵌套19.函数的参数20.函数的可变长参数21.命名关键字参数22.名称空间与作用域23.异常处理24.深浅拷贝问题25.函数的定义和调用26.控制文件读写内容的模式27.主动控制文件内指针移动28.文件的操作方法29.垃圾回收机制GC30.可变与不可变类型31.元类32.内置方法33.pickle模块34.单例模式35.方法补充issubclass和isinstance36.多态37.继承38.面向对象的三大特性39.封装40.内置函数41.面向对象42.logging模块43.subprocess模块44.正则45.datetime模块46.time模块47.绝对路径和相对路径48.random模块49.os模块50.hashlib模块51.模块与包52.json模块53.生成器54.三元运算符文件操作
(1)文本处理引入
- 应用程序运行过程中产生的数据最先都是存放于内存中的。
- 若想永久保存下来,必须要保存于硬盘中。应用程序若想操作硬件必须通过操作系统。
- 而文件就是操作系统提供给应用程序来操作硬盘的虚拟概念。
- 用户或应用程序对文件的操作,就是向操作系统发起调用,然后由操作系统完成对硬盘的具体操作。
(2)文件操作的基本流程。
- 打开文件,由应用程序向操作系统发起系统调用open(...),操作系统打开该文件,对应一块硬盘空间,并返回一个文件对象赋值给一个变量f。f为文件句柄。
- 调用文件对象下的读/写方法,会被操作系统转换为读/写硬盘的操作。
- 向操作系统发起关闭文件的请求,回收系统资源。
# 文件操作的基本流程
# 1.打开文件,由应用程序向操作系统发起系统调用open(...),操作系统打开该文件,对应一块硬盘空间,并返回一个文件对象赋值给一个变量f。f为文件句柄。
f = open('s.txt', 'r', encoding='utf-8')
# 2.调用文件对象下的读/写方法,会被操作系统转换为读/写硬盘的操作。
date = f.read()
print(date)#my name is syh
# 3.向操作系统发起关闭文件的请求,回收系统资源。
f.close()
(3)资源回收与with的用法。
-
打开一个文件包含两部分资源
- 应用程序的变量f和操作系统打开的文件。
- 在操作完毕一个文件时,必须把与该文件的这两部分资源全部回收
#回收方法: f.close() # 回收操作系统打开的文件资源 del f # 回收应用程序级的变量
-
其中del f一定要发生在f.close()之后
- 否则就会导致操作系统打开的文件无法关闭,白白占用资源。
-
而python自动的垃圾回收机制决定了我们无需考虑del f,
- 这就要求我们,在操作完毕文件后,一定要记住f.close()。
-
虽然我们如此强调,但是大多数读者还是会不由自主地忘记f.close()。
-
考虑到这一点,python提供了with关键字来帮我们管理上下文。
with的用法
# with关键字的用法
with open('s.txt', 'r', encoding='utf-8') as f:
date = f.read()
print(date)#my name is syh
- 若要保证不乱码,文件以什么方式存的,就要以什么方式打开。
(4)文件的操作模式
-
出现路径问题时:
- 当路径中可能存在有转移的字符时,字符串前面加上r来解决转义的问题。
-
只读:r
-
只写:w
-
追加写:a
1.只读r模式
- 文件不存在的时候会报错,文件存在时文件内的指针跳到文件的开头。
with open('s.txt', 'r', encoding='utf-8') as f:
date = f.read()
print(date)#my name is syh
2.只写w模式
- w只写模式: 在文件不存在时会创建空文档,文件存在会清空文件,文件指针跑到文件开头。
- 在文件不关闭的情况下,连续的写入,后写的内容一定跟在前写内容的后面
- 如果重新以w模式打开文件,则会清空文件内容
with open('s.txt','w',encoding='utf-8') as f:
date=f.write('syh')
print(date)#3
3.追加写a模式
- a只追加写模式: 在文件不存在时会创建空文档,文件存在会将文件指针直接移动到文件末尾。
with open('s.txt', 'a', encoding='utf-8') as f:
f.write('syh\n')
f.write('hahaha\n')
强调 w 模式与 a 模式的异同
- 相同点:在打开的文件不关闭的情况下,连续的写入,新写的内容总会跟在前写的内容之后
- 不同点:
- 以 a 模式重新打开文件,不会清空原文件内容,会将文件指针直接移动到文件末尾,新写的内容永远写在最后。
- 以w模式打开文件,则会清空文件内容。
练习:
# 1.用户注册
print('注册')
username = input('请输入注册用户名:').strip()
password = input('请输入注册密码:').strip()
with open('syh.txt', 'w', encoding='utf-8') as f:
info = '%s:%s\n' % (username, password)
f.write(info)
# 2.登录
print('登录')
username_input = input('请输入用户名:').strip()
password_input = input('请输入密码:').strip()
with open('syh.txt', 'r', encoding='utf-8') as f:
for line in f:
u, p = line.strip().split(':')
if u == username_input and p == password_input:
print('登录成功')
break
else:
print('用户名和密码错误,登录失败!')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)