第七节:文件和文件夹的操作
一、IO流(Stream)
通过“流”的形式允许计算机程序使用相同的方式来访问不同的输入/输出源。stream是从起源(source)到接收的(sink)的有序数据。我们这里把输入/输出源对比成“水桶”,那么流就是“管道”。
文件流: 就是源或者目标都是文件的流。
二、文件流的操作
- 打开文件流
文件对象 = open(目标文件, 访问模式)
-
操作
- 读
文件对象.read() 文件对象.readlines() 文件对象.readline()
- 写
文件对象.write()
- seek() 指针操作
-
关闭
文件对象.close()
- 访问模式
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
三、文件和文件夹的操作
在Python中文件和文件夹的操作要借助os模块里面的相关功能。OS模块是Python标准库中的一个用于访问操作系统功能的模块。
首先需要导入OS模块: import os
import os # 使用之前先导入
os.name # 查看当前操作系统的名字,"nt"表示Windows,"posix"表示Linux
os.sep # 获取当前系统平台路径分隔符
os.getcwd() # 获取当前工作目录
os.environ[key]/os.getenv(key) # 获取当前环境变量值
os.listdir(path) # 列出指定目录path的所有文件和目录名
os.chdir(path) # 切换目录
os.mkdir(path)/os.makedirs(path) # 创建单层目录/多层目录
os.rmdir(path)/os.removedirs(path) # 删除单层空目录/多层空目录
os.remove(file_name) # 删除文件
os.rename(old_name,new_name) # 修改文件或目录名称
os.path.abspath(path) # 获取指定相对路径的绝对路径
os.path.split(path) # 获取指定路径的目录名或文件名
os.path.isfile(path) # 判断指定路径目标是否为文件
os.path.isdir(path) # 判断指定路径目标是否为目录
os.path.exists(path) # 判断指定路径是否存在
os.path.splitext(path) # 分离文件拓展名
os.path.join(path,*paths) # 路径连接
os.path.base(path) # 提取文件名
os.path.dirname(path) # 提取文件路径
os.path.getsize(path) # 返回文件大小
案例:实现一个文件夹中(目录中可能还有子目录),拷贝所有的py文件。到另外一个指定的目录中。