计算机中的文件是以二进制保存在磁盘上的
- 文本文件和二进制文件
- 文本文件
可以使用 文本编辑软件 查看
本质上还是二进制文件 - 二进制文件
二进制文件是给机器阅读的
- 文本文件
- 操作文件的基本函数
注意:如果忘记关闭文件,会造成系统资源消耗,而且会影响到后续对文件的访问。
我们先要知道操作一个文件的大致步骤,就是先打开文件,然后对文件进行操作,最后关闭。这也可以说就是一个套路性的东西。还要说的就是上面的后三个函数需要通过文件对象调用。
语法说了也是比较迷,下面直接看一个例子。
# 1. 打开 - 文件名需要注意大小写
file = open("README")
#2. 读取
text = file.read()
print(text)
#3. 关闭
file.close()
上边的这个例子就是一个简单的文件操作,而其中的file
就是一个文件对象。
- 文件指针
- 在文件的读取过程中会有一个标记此时读到的位置的东西–>文件指针
- 文件指针 标记 从哪个位置开始读取数据
- 第一次打开 文件时,通常 文件指针会指向文件的开始位置
- 当执行了
read
方法后,文件指针 会移动到 读取内容的末尾
这里需要说一下的是,当执行完read
函数的时候,这个时候文件指针是在末尾的,换句话说就是如果此时再次执行read
这个函数是读不到任何东西的。
- 打开文件的方式
上面的操作不加任何参数的话,默认是只读的。如果想指定其他的操作,需要增加参数。
注意:频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读、只写 的方式来操作文件。
看下面的一个简单例子
#打开文件
f = open("README", "w")
f.write("hello python!\n")
f.write("洛尘曦")
#关闭文件
f.close()
- 按行读取
这里需要说一个方法,就是readline
方法,它也是用文件对象进行操作的,这个方法一次只读一行数据。 - 为啥要使用
readline
方法
我们知道磁盘(也就是硬盘)cpu的交换数据是需要通过内存条的,也就是说,每一次读文件时会把数据加载到内存中,这个时候一个小文件还好,如果是一个很大的文件就会占用内存,如果一行读一次的话,这个问题就可以解决了。
看下面的这个例子
#打开文件
file = open("README")
while True:
# 读取一行内容
text = file.readline()
# 判断是否读到内容
if not text: # 这个条件是判断是否文件读完,如果读完就跳出循环
break
# 每读取一行的末尾已经有了一个 `\n`
print(text, end="")
#关闭文件
file.close()
- 下面看一下文件复制的小例子
file_read = open("sgyz.txt")
flie_write = open("sgyz[复件].txt", "w")
text = file_read.read()
flie_write.write(text)
file_read.close()
flie_write.close()
上面的代码将sgyz.txt文件复制了一份,当然如果要是大文件的话,要用readline
函数。
- os模块
- 这个os包是对文件进行的创建、重命名、删除、改变路径、查看目录内容、……等操作,换句话说其实就是用终端命令
- 使用之前需要先导入这个包
下面是文件操作
下面是目录操作
注意: 这里的文件目录到支持绝对路径和相对路径