今日小节汇总
文件操作
利用python代码的编写来读写文件
- 文件的概念
- 文件的操作方式
- 文件读写模式
- 文件操作模式
- 文件诸多方法
- 文件内容修改
- 文件光标移动
详解
文件操作
- 文件的概念
- 就是操作系统暴漏给用户操作硬盘的快捷方式
- eg:双击一个文件,其实是从硬盘将数据加载到内存
- ctrl+s保存文件,其实是将内存中的数据刷到硬盘保存
- 代码打开文件的两种方式
- 方式一:
f = open(文件路径,读写模式,encoding='utf8') f.close()
- 方式二:
with open('a.txt','r', encoding='utf8') as f1: with子代码块 ps:with上下文管理好处在于子代码运行结束自动调用close方法关闭资源
- 强调
open方法的第一个参数是文件路径 并且撬棍跟一些字母的组合会产生特殊的含义导致路径查找混乱 为了解决该问题可以在字符串的路径前面加字母r D:\a\n\t r'D:\a\n\t' 以后涉及到路径的编写 推荐加上r with支持一次性打开多个文件 with open() as f1,open() as f2,open() as f3: 子代码
文件读写模式
- 'r'只读模式:只能读不能写
# 1.文件路径不存在:会直接报错 # with open(r'b.txt','r',encoding='utf8') as f: # print(f.read()) # 2.文件路径存在:正常读取文件内容 with open(r'a.txt', 'r', encoding='utf8') as f: print(f.read())
- 'w'只写模式:只能写不能看
# 1.文件路径不存在:自动创建 # with open(r'b.txt', 'w', encoding='utf8') as f: # pass # 2.文件路径存在:先清空文件内容 之后再写入 with open(r'a.txt', 'w', encoding='utf8') as f: f.write('假期综合征 赶紧要调整\n') f.write('假期综合征 赶紧要调整\n') f.write('假期综合征 赶紧要调整\n') 强调:换行符需要自己添加 并且在后续数据读取比对的时候也一定要注意它的存在
- 'a'只追加模式:文件末尾添加数据
# 1.文件路径不存在:自动创建 # with open(r'c.txt', 'a', encoding='utf8') as f: # pass # 2.文件路径存在:自动在末尾等待追加内容 with open(r'a.txt', 'a', encoding='utf8') as f: f.write('放假七天和上班七天感觉是完全不一样的') """ 当我们在编写代码的时候 有些部分不知道写什么具体代码 但是也不能空着不写 这个时候可以使用关键字 pass ... 只补全语法不执行功能 本身没有任何的含义 """
文件操作模式
- 't'文本模式
- 默认的模式,我们上面所写的r、w、a其实全称是rt、wt、at
- 只能操作文本文件
- 读写都是以字符为单位
- 需要指定encoding参数,如果不知道则会采用计算机默认的编码
- 默认的模式,我们上面所写的r、w、a其实全称是rt、wt、at
- 'b'二进制模式(bytes模式)
- 不是默认的模式,需要自己指定rb、wt、at
- 可以操作任意类型的文件
- 读写都是以bytes为单位
不需要指定encoding参数,因为它已经是二进制模式,不需要编码
- 不是默认的模式,需要自己指定rb、wt、at
- 二进制模式与文本模式针对文件路径是否存在的情况下,规律是一样的!!!
文件诸多方法
- read()
- 一次性读取文件内容 并且光标停留在文件末尾 继续读取则没有内容
- 并且当文件内容比较多的时候 该方法还可能会造成计算机内存溢出
- 括号内还可以填写数字 在文本模式下 表示读取几个字符
- for循环
- 一行行读取文件内容 避免内存溢出现象的产生
- readline()
- 一次只读一行内容
- readlines()
- 一次性读取文件内容,会按照行数组织成列表的一个个数据值
- readable()
- 判断文件是否具备读数据的能力
- write()
- 写入数据
- writeable()
- 判断文件是否具备写数据的能力
- wrtelines()
- 接受一个列表,一次性将列表中所有的数据值写入
- flush()
- 将内存中文件数据立刻刷到硬盘,相当于ctrl+s功能
文件内光标的移动
with open(r'a.txt', 'rb') as f:
print(f.read())
f.seek(0,0)
print(f.read())
f.seek(0, 0)
print(f.read())
# print(f.read(2).decode('utf8'))
# f.seek(-1, 2)
# print(f.tell()) # 返回光标距离文件开头产生的字节数
"""
seek(offset, whence)
offset是位移量 以字节为单位
whence是模式 0 1 2
0是基于文件开头
文本和二进制模式都可以使用
1是基于当前位置
只有二进制模式可以使用
2是基于文件末尾
只有二进制模式可以使用
"""
# print(f.read(3).decode('utf8'))
标签:一节,文件,encoding,utf8,每日,模式,print,open
From: https://www.cnblogs.com/gaoli111/p/16770887.html