文件操作

文件操作​

  1. 文件的概念​

​ 就是操作系统暴露给用户操作硬盘的快捷方式

​ 双击一个文件 其实是从硬盘将数据加载到内存

​ ctrl+s 保存文件 其实是将内存中的数据刷到硬盘保存
2. #### 代码打开文件的两种方式

方式1:

​ f = open(文件路径,读写模式,encoding='utf8')

​ f.close()

方式2:

​ with open('a.txt', 'r', encoding='utf8') as f1:

​ with子代码块

winth上下文管理号处在于子代码运行结束自动调用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': 只读模式只能读不能写

'r+':可读可写,该文件必须已存在,文件指着在最前方

'rb':表示以二进制方式读取文件,该文件必须以存在

'w':只写,打开即默认创建一个新文件,如果文件已存在,则覆盖写(即文件内原始数据会被新写的数据清空覆盖)

'w+':写读,打开创建新文件并写入数据,如果文件已存在,则覆盖写。

'wb':表示以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,则覆盖写。

'a':追加写,若打开的是已有文件则直接对已有文件操作,若打开文件不存在则创建文件,只能执行写(追加后面),不能读

'a+':追加读写,打开文件方式与写入方式和'a'一样,都是可以读。需注意的是你刚用'a+'打开一个文件,一般不能直接读取,因为此时光标已经是文件末尾,除非你把光标移动到初始位置或任意非末尾的位置

文件操作模式

  • 文本模式

    1.文本模式本质就是我们日常书写的文件,只能容纳字符串不能容纳视频音频等其他格式文件
    	简写:r	全拼:rt	(读取文件)
        简写:w	全拼:wt	 (书写文件)
        简写:a	全拼:at	(追加书写文件)
    2.注意事项
        2.1文件,模式只能操作文本文件
        2.2在书写时必须要话encoding后面跟上字符的编码格式
        2.3读取的时候也只能读取字符串格式
    
  • 二进制模式

    1.二进制模式其实就是只有计算机能够听懂的语言,将我们人类能够看懂的语言编译成机器能听懂的语言,在通讯时我们将自己的语言发送通过计算机编译成二进制模式,从另一个接收端基站模拟出你发送的数据信号这样接受端就可以收到你所发送的东西。
    	全拼:rb			(读取文件)
        全拼:wb			(书写文件)
        全拼:ab			(追加书写文件)
    2.注意事项
    	2.1在标注二进制模式时必须全拼否则不识别或自动识别为文本模式
        2.2能够操纵所有的文本格式
        2.3不需要编辑encoding就可以直接编写因为会直接转成二进制
        2.4他的存储单位是以bytes来存储
    

文件诸多方法

1.read()

​ 一次性读取文件内容 并且光标停留在文件末尾 简写读取则没有内容

2.for循环

一行行读取文件内容 避免内存溢出现象的产生

3.readline()

一次只读一行内容

4.readlines()

一次性读取文件内容 会按照行数组织成列表的一个个数据值

5.readable()

判断文件是否具备读数据的能力

6.weint()

写入数据

7.weiteable()

判断文件是否具备写数据的能力

8.writelines()

接收一个列表 一次性列表中所有的数据值写入

9.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'))

posted @ 2022-10-09 17:21  吴仁耀  阅读(93)  评论(0)    收藏  举报