目录
一、文件的打开、关闭、读取、写入等基础操作。
1、文件的打开、关闭、读取
2、文件的写入:
二、文件的定位读取
::文件中的内容:
1.tell() 方法:
2.seek()方法
三、文件的复制和重命名
1.文件的复制
2.文件的重命名
四、目录操作
1.创建目录
2.删除目录
3.获取目录的文件列表
五、文件路径操作
1.相对路径与绝对路径
2.检测路径有效性
3.路径的拼接
六、文件打开匹配模式表
# open(file, mode, buffering, encoding, errors, newline)
# open(文件、模式、缓冲、编码、错误、换行符)
txt_data = open('自定义文本文件.txt', mode='r', encoding='utf-8') # 打开文件
# txt_data.write('5') # 用 write 方法 写入数据
# read 方法可以从指定文件中读取指定数据 默认情况是读取全部
# 也可以输入参数,读取指定字节
# 例如 txt_data.read(2) 就是读取两个字节的数据
print(txt_data.read())
txt_data.close() # 关闭文件
自定义文本文件中的内容:
运行结果:
# 文件的写入可以用两种方法:1.write() 2.writelines()
# write() 方法可以将字符串写入, 最后返回写入数据的长度
# writelines() 方法用来向文件中写入字符串序列,例如可以传入一个列表的数据,write传入字符串序列会报错
txt_data = open('自定义文本文件.txt', mode='a+', encoding='utf-8') # 打开文件
# 文件的写入可以用两种方法:1.write() 2.writelines()
# write() 方法可以将字符串写入, 最后返回写入数据的长度
# writelines() 方法用来向文件中写入字符串序列,例如可以传入一个列表的数据,write传入字符串序列会报错
print(txt_data.write('00000')) # 输出写入数据的长度
str_1 = 'abcde' # 定义两个字符串
str_2 = 'fghij'
txt_data.writelines(['\n', str_1, ',', str_2]) # 写入一个字符串序列
txt_data.close() # 关闭文件
运行完后文本文件中追加的内容:
运行结果:输出了write写入的文件长度
Python中获取当前文件 读/写位置 以及修改文件 读/写位置 的方法有 tell()和seek()。
tell() 方法用于获取当前文件 读/写 的位置。
# Python中获取当前文件 读/写位置 以及修改文件 读/写位置 的方法有 tell()和seek()。
file = open('自定义文本文件.txt', mode='r', encoding='utf-8') # 打开文件
# tell() 方法用于获取当前文件 读/写 的位置
print(file.read(3)) # 读取3个字节
print(file.tell()) # 输出文件位置
file.close()
运行结果:
# Python中获取当前文件 读/写位置 以及修改文件 读/写位置 的方法有 tell()和seek()。
file = open('自定义文本文件.txt', mode='r', encoding='utf-8') # 打开文件
# seek() 方法用于设置当前文件 读/写位置,其中seek(offset, from)方法有两个参数 offset和from
# 参数 offset 表示偏移量,即 读/写 位置需要移动的字节数
# 参数 from 用于指定文件的 读/写位置,该参数的取值有 0、1、2,它们代表的含义分别是:
# 0:表示在开始位置 读/写 1:表示在当前位置 读/写 2:表示在结尾位置 读/写
file.seek(5, 0) # 移动到第5个字节,也就是从第6个字节开始读起
print(file.read())
file.close()
运行结果:
注意:因为第六个位置有个换行符,所以输出时是先出现一个空行!
文件复制的基本流程:打开文件 -> 读取文件内容 -> 创建新文件,将数据写入新文件 -> 关闭文件,保存数据
简单理解就是,创建一个新文件夹,将要复制的文件的内容读取出来后保存到新文件夹而已。
# 文件的复制
# 流程:打开文件 -> 读取文件内容 -> 创建新文件,将数据写入新文件 -> 关闭文件,保存数据
file = open('自定义文本文件.txt', 'r', encoding='utf-8') # 打开文件
file_info = file.read() # 读取文件内容
new_file = open('自定义文本文件的_备份.txt', 'w', encoding='utf-8') # 创建新文件
new_file.write(file_info) # 写入数据
file.close() # 关闭文件
new_file.close() # 关闭新建文件
运行结果:
成功运行过后,会出现一个和原文件相同的文件出来。
文件的重命名需要用到 os模块 中的 rename() 函数
其语法为 rename(原文件名, 新文件名)
注意:待命名的文件必须已经存在,否者解释器会报错!
# 文件的重命名需要用到 os模块 中的 rename() 函数
# 其语法为 rename(原文件名, 新文件名)
import os
# 注意:待命名的文件必须已经存在,否者解释器会报错!
os.rename('重命名前的文件.txt', '重命名后的文件.txt')
创建一个重命名前的文件,当前是该文件重命名前。
成功运行后,该文件改名成功
变成 重命名后的文件.txt
os模块中的mkdir()函数用于创建目录
在新建目录前要先判定该目录存不存在,如果存在还去创建则会报错
# os模块中的mkdir()函数用于创建目录
# 在新建目录前要先判定该目录存不存在,如果存在还去创建则会报错
import os
# os.path.exists() -> 可以判定该目录存不存在, 然后返回一个 bool 值
if os.path.exists('new_dir') is False: # 如果文件不存在
os.mkdir('new_dir') # 创建文件
else:
print('该目录已存在。')
运行结果:
出现一个 new_dir 的目录。
再次运行后,显示目录已存在。
Python 内置模块 shutil 中的 rmtree() 函数可以删除目录
利用 os 模块中的 os.path.exists 来判断当前文件下是否有你想要的目录
# Python 内置模块 shutil 中的 rmtree() 函数可以删除目录
import shutil
import os
shutil.rmtree('new_dir')
print(os.path.exists('new_dir')) # 删除后,目录不存在,返回 False
运行结果:
因为 new_dir 目录被删除了,所以 os.path.exists 返回的值是 False
os 模块中 listdir() 函数用于获取文件夹下的文件或文件夹名的列表
格式为 os.listdir('文件夹路径')
例如:这是当前文件夹和文件夹的路径,以及文件夹内的文件
# os 模块中 listdir() 函数用于获取文件夹下的文件或文件夹名的列表
# 格式为 os.listdir('文件夹名')
import os
print(os.listdir('G:/School_Program/实例/文件与文件路径操作'))
运行结果:
输出一个列表,列表内的元素是各个文件的名字。
文件相对路径指某文件(或文件夹)所在的路径与其他文件(或文件夹)的路径关系,
绝对路径指盘符开始到当前位置的路径。
os模块提供了用于检测目标路径是否是绝对路径的isabs()函数和将相对路径规范化为绝对路径的abspath()函数,
isabs() 函数 用于检测目标路径是不是绝对路径,当目标路径为绝对路径时,isabs0函数会返回True,否则返回False。
abspath() 函数,当目标路径为相对路径时,可以使用 abspath()函数 将目标路径规范化为绝对路径
# 文件相对路径指某文件(或文件夹)所在的路径与其他文件(或文件夹)的路径关系,
# 绝对路径指盘符开始到当前位置的路径。
# os模块提供了用于检测目标路径是否是绝对路径的isabs()函数和将相对路径规范化为绝对路径的abspath()函数,
import os
# isabs() 函数 用于检测目标路径是不是绝对路径,当目标路径为绝对路径时,isabs0函数会返回True,否则返回False。
# 例如 当前的 python文件 是 相对路径和绝对路径.py
print(os.path.isabs("相对路径和绝对路径.py"))
print(os.path.isabs("G:/School_Program/实例/文件与文件路径操作/相对路径和绝对路径.py"))
# abspath() 函数,当目标路径为相对路径时,可以使用 abspath()函数 将目标路径规范化为绝对路径
print(os.path.abspath('相对路径和绝对路径.py'))
运行结果:
os 模块中 exists() 函数用于判断路径是否存在,存在返回True,不存在返回False
# os 模块中 exists() 函数用于判断路径是否存在,存在返回True,不存在返回False
import os
print(os.path.exists('G:/School_Program/实例/文件与文件路径操作/检测路径的有效性.py'))
print(os.path.exists('检测路径的有效性.py'))
运行结果:
os模块中 join() 函数用于拼接路径
最后用 os.path.exists 检测拼接后的路径是否有效,有效则输出 True,无效输出False
# os模块中 join() 函数用于拼接路径
# 语法:os.path.join(路径1[,路径2[,...]])
import os
path_1 = 'G:/School_Program/'
path_2 = '实例/文件与文件路径操作/路径的拼接.py'
splice_path = os.path.join(path_1, path_2)
print(splice_path)
print(os.path.exists(splice_path)) # 检测路径是否有效
运行结果:
打开模式 | 名称 | 描述 |
---|---|---|
r/rb | 只读模式 | 以只读的形式打开文本文件/二进制文件,若文件不存在或无法找到,open()函数将调用失败 |
w/wb |
只写模式 | 以只写的形式打开文本文件/二进制文件,若文件已存在,则重写文件,否则创建文件 |
a/ab | 追加模式 | 以只写的形式打开文本文件/二进制文件,只允许在该文件末尾追加数据,若文件不存在,则创建新文件 |
r+/rb+ | 读取(更新)模式 | 以读/写的形式打开文本文件/二进制文件,如果文件不存在,open()函数调用失败 |
w+/wb+ | 写入(更新)模式 | 以读/写的形式创建文本文件/二进制文件,若文件已存在,则重写文件 |
a+/ab+ | 追加(更新)模式 | 以读/写的形式打开文本/二进制文件,但只允许在文件末尾添加数据,若文件不存在,则创建新文件 |