day7.文件处理
2024-09-07 13:27:22
@字符编码
见:https://zhuanlan.zhihu.com/p/108805502
一.文件基本操作
'''
1、什么是文件
文件是操作系统提供给用户或者应用程序的一种操作硬盘的机制/功能
2、为何要用文件
应用程序-----------》遥控器
操作系统-----------》文件
计算机硬件----------》硬盘
3、如何用文件
文件操作的基本流程:
1、应用程序打开文件,拿到一个文件对象/文件句柄
2、调用文件句柄下的读、写操作
3、关闭文件,回收操作系统资源
'''
一. 文件操作的基本流程
# f = open('D:/python17期/day08/代码/aaa/a.txt',mode='rt',encoding="utf-8") # windows默认:gbk
# # print(f)
# res = f.read()
# print(res)
#
# f.close()
# # print(f)
# # f.read()
#
# del f
二. 上下文管理(with)
# with open('aaa/a.txt',mode='rt',encoding="utf-8") as f,\
# open(...) as f1,\
# open(...) as f2:
# f.read()
# f1.read()
# f2.read()
# with open('aaa/a.txt',mode='rt',encoding="utf-8") as f:
# print(f.read())
三.文件的mode:
(1).控制文件读写操作的模式
# r(默认的)
# w
# a
(2).控制文件读写内容的模式
# t(默认的):无论读写都是以字符串为单位的,必须要指定encoding参数--->只能用于文件文件的处理
# b:无论读写都是以二进制位(bytes类型)单位的,一定不能指定encoding参数---》可以用于所有文件的处理
1、r:只读模式,文件不存在则报错,文件存在文件指针则跳到文件开头
# with open('aaa/a.txt',mode='rt',encoding="utf-8") as f:
# print(f.read())
2、w:只写模式,文件不存在则创建空文档文件指针处于文件开头,文件存在则清空文件指针处于文件开头
# with open('aaa/a.txt',mode='wt',encoding="utf-8") as f:
# # f.write("你好\n")
# # f.write("哈哈哈\n")
# # f.write("我真帅\n")
# f.write("。。。。")
3、a:只追加写模式,文件不存在则创建空文档文件指针处于文件末尾,文件存在则指针处于文件末尾
# with open('aaa/a.txt',mode='at',encoding="utf-8") as f:
# f.write("你好1\n")
# f.write("你好2\n")
# f.write("你好3\n")
四.了解
# r+ w+ a+ :可读可写
#在平时工作中,我们只单纯使用r/w/a,要么只读,要么只写,一般不用可读可写的模式
二.文件处理高级操作
(一).文件处理的方法1.
读操作
f.read() # 读取所有内容,执行完该操作后,文件指针会移动到文件末尾
f.readline() # 读取一行内容,光标移动到第二行首部
f.readlines() # 读取每一行内容,存放于列表中注:
# f.read()与f.readlines()都是将内容一次性读入内容,如果内容过大会导致内存溢出
2.写操作
f.write('1111\n222\n') # 针对文本模式的写,需要自己写换行符
f.write('1111\n222\n'.encode('utf-8')) # 针对b模式的写,需要自己写换行符
f.writelines(['333\n','444\n']) # 文件模式
f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式
3.其它
f.readable() # 文件是否可读
f.writable() # 文件是否可读
f.closed # 文件是否关闭
f.encoding # 如果文件打开模式为b,则没有该属性
f.flush() # 立刻将文件内容从内存刷到硬盘
(二).控制文件指针移动
# 控制文件内指针移动的单位: 只有t模式下的read(n)代表的是字符个数,除此之外全都是字节个数
#之前文件内指针的移动都是由读/写操作而被动触发的,若想读取文件某一特定位置的数据,则则需要用f.seek方法主动控制文件内指针的移动,详细用法如下:
# f.seek(指针移动的字节数,模式控制):
模式控制:
# 0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
# 1: 该模式代表指针移动的字节数是以当前所在的位置为参照的
# 2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
# 强调:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用
(三).文件修改的两种方式
一,
1.将文件内容一次性全部读入内存
2.在内存中将内容修改
3.将修改后的内容写回源文件
'''
# with open('log.txt',mode='rt',encoding='utf-8') as f:
# data = f.read()
# res = data.replace('日志','log')
#
# with open('log.txt',mode='wt',encoding='utf-8') as f:
# f.write(res)
'''
二.
1.以读的方式打开源文件,在以写的方式打开一个临时文件
2.从源文件中读出一行内容存入内存中,修改完之后再存入临时文件
3.删除源文件,将临时文件改名为源文件名
'''
# import os
# with open('log.txt',mode='rt',encoding='utf-8') as str_f,\
# open('.log.txt.swp',mode='wt',encoding='utf-8') as dst_f:
# for line in str_f:
# dst_f.write(line.replace('log','日志'))
#
# os.remove('log.txt')
# os.rename('.log.txt.swp','log.txt')
最新文章
- input checkbox 扩大点击范围
- DirectShow .Net 实现视频
- SVN 的安装与配置
- 封装系统自带的Debug
- ASP.NET Web API 特性
- 新手须知设计的法则 Mark
- btr_pcur_t
- cwm-recovery自动生成工具
- Node.js 创建第一个应用
- Web开发中需要了解的东西
- 内存快照排查OOM,加密时错误方法指定provider方式错误引起的OOM
- 结合实例分析Android MVP的实现
- C 语言多线程与锁机制
- liunx搭建DHCP服务器以及DHCP中继服务器
- js运用2
- memcache 在php中的用法
- eclipse 使用tomcat运行JavaWeb项目,文件修改后为何不用重启tomcat? (运行web项目的4种方式)探究
- Java lambda 表达式
- 170623、springboot编程之JdbcTemplate操作数据库
- FNDLOAD Commands to Download Different Seed Data Types. (DOC ID 274667.1)
热门文章
- 图片居中的flex实现
- ForkJoinPool大型图文现场(一阅到底 vs 直接收藏)
- spring boot +dubbo 踩坑记录
- CSS元素层级的概念及性质
- LeetCode113. 路径总和 II
- Win网络安全审计
- Latency 和 Delay 区别
- 最简单的,在win,linux中,用powershell,自动获取Let's Encrypt证书方法
- [个人总结]pytorch中model.eval()会对哪些函数有影响?
- 漏洞复现-CVE-2017-4971-Spring Web Flow 远程代码执行