Python学习笔记之文件操作
文件操作
1.1 文件操作的作用
- 文件读写
- 文件备份
- 把一些内容存放起来,可以让程序下一次执行的时候直接使用,而不用重新制作一份,省时省力。
1.2 文件的基本操作
1.2.1 文件简单操作体验
# 打开文件
# 第一个参数是文件路径,第二个参数是访问模式
f = open("a.txt", "w")
# 文件操作
f.write("hello")
# 关闭文件
f.close()
1.2.2 访问模式
模 式 | 说明 |
---|---|
r | (以读的方式)如果文件不存在,就会报错。而且不能够往文件中写文件,默认的访问方式,文件指针开头 |
w | (以写的方式来)如果文件不存在,创建文件。 |
a | (以追加的方式)如果文件不存在,创建文件。文件指针在文件的结尾的 |
在主访问模式的带+,带b的区别。
-
带 + 的表示二进制
-
带 b 的表示可读可写
-
文件指针对数据的影响
-
r+ 与 w+ 与 a+ 的区别
# 1. r+ 可读可写(带+号)
# 2. 依赖r的特点,如果没有文件,会报错
# FileNotFoundError: [Errno 2] No such file or directory: 'a.txt'
# 3. 根据文件的指针,文件指针指向开头
f = open("a.txt", "r+")
f.close()
# 1. w+可读可写(带+号)
# 2. 依赖w(主访问模式)的特点,如果没有文件,会新建文件
# 3. 根据文件的指针,文件指针指向开头
# 4. 文件指向开头,用新内容覆盖旧内容
f = open("a.txt", "w+")
f.close()
# 1. a+可读可写(带+号)
# 2. 依赖a(主访问模式)的特点,如果没有文件,会新建文件
# 3. 根据文件指针的影响,文件指针指向末尾
# 4. 但是无法打印读取到的数据(因为指针指向末尾,他会向右读数据,而右边的数据是空的)
f = open("a.txt", "a+")
res = f.read()
print(res)
f.close()
比喻:找一本指定标题笔记本,如果想看的话,没有找到,就会发狂很难受,如果写笔记的的话,可以随便的找一张纸来写,打开这个笔记本(打开文件),看里面的内容(r),写笔记(w、a),关闭笔记,将笔记返回原来的位置(关闭文件)
1.2.3 文件读取
read()
readlines()
readline()
read
f = open("a.txt", "r")
# 不写参数,表示读取所有的
# print(f.read())
# 带参数, 读取10个字符
# 文件如果有换行,底层有个\n,占用了一个字符
print(f.read(10))
f.close()
readlines
f = open("a.txt", "r")
# 文件对象.readlines()
# 以行为单位,读取文件,返回一个列表
con = f.readlines()
print(con)
# ['hello\n', 'world\n', 'java\n', 'hihi']
f.close()
readline
f = open("a.txt", "r")
# 一次读取一行
res1 = f.readline()
print(res1)
res2 = f.readline()
print(res2)
f.close()
1.2.4 文件操作seek函数
seek的作用:就是用来移动指针的。
文件对象.seek(偏移量, 起始位置)
起始位置:
- 0:文件开头
- 1: 当前位置
- 2: 文件结尾
# r 学习目标:
f = open("a.txt", "r+")
# 1. 改变指针文件位置(读取部分数据)
f.seek(2, 0)
# 2. 将指针位置放在末尾(让他读不出来数据)
f.seek(0, 2)
res = f.read()
print(res)
f.close()
# a 学习目标
f = open("a.txt", "a+")
# 1. 改变指针文件位置,做到可以读取数据
f.seek(2, 0)
res = f.read()
print(res)
f.close()
1.3 文件备份
需求:用户输入当前文件的文件名,程序对该文件名进行备份
(备份文件名为:xx[备份].后缀)
1.3.1 文件备份步骤
- 接收用户的输入的文件名
- 规范备份文件名
- 备份文件写入数据
old_name = input("请输入当前目录的文件名:")
# 获取用户输入的信息
# print(old_name)
# 获取 最后一个以.结尾的索引
index = old_name.rfind(".")
# 获得前缀
qianzui = old_name[:index]
# 获得后缀
houzui = old_name[index:]
# 通过拼接修改备份的文件名
new_name = qianzui + "【备份】" + houzui
# print(new_name)
# 操作原来的文件 和 备份的文件
old_f = open(old_name, "rb")
new_f = open(new_name, "wb")
# 将读到的文件写入到备份的文件
while True:
con = old_f.read(1024)
if len(con) == 0:
break
new_f.write(con)
pass
print("备份文件成功")
1.3.2 文件备份的好处
对文件内容进行保护
1.4 文件和文件夹的操作
文件操作
- 导入os模块
import os
- 文件重命名
os.rename(old_dir_name, new_dir_name)
- 文件删除
os.remove(dir)
文件夹操作
- 创建文件夹
os.mkdir(文件夹名字)
- 删除文件夹
os.rmdir(文件夹名字)
- 获取当前文件所在文件目录
os.getcwd()
- 改变默认目录
os.chdir(目录)
- 获取目录列表
os.listdir()
- 文件夹重命名
os.rename(old_dir_name, new_dir_name)
1.5 应用案例
需求:把xx文件夹下的所有文件重命名为python_xx(添加字符串)
把xx文件夹下面的python_xx文件重命名为xx文件(删除字符串)
import os
# 做一个flag = 1,添加指定字符串的文件名, flag = 2, 删除指定字符串的文件名
flag = 2
# 获得当前目录下的所有文件
list_file = os.listdir()
for item in list_file:
if flag == 1:
new_name = "python_" + item
if flag == 2:
index = len("python_")
new_name = item[index:]
os.rename(item, new_name)