文件操作的作用
文件的基本操作
打开
读写
关闭
文件备份
文件和文件夹的操作
二、文件的基本操作
2.1文件操作步骤
1、打开文件
2、读写等操作
3、关闭文件
注意:可以只打开和关闭文件,不进行任何读写操作
1、打开
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法:
open(name, mode)
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
mode:设置打开的模式(访问模式):只读、写入、追加等
体验文件操作
# 1、打开文件 open()
f = open('test.txt', 'w')
# 2、读写操作 write() read()
f.write('aaaaa')
# 3、关闭文件 close()
f.close()
访问模式特点:
主访问模式包括三个: r w a
r,以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式
# r,如果文件不存在,就会报错,不支持写入操作,只支持只读
f = open('test.txt', 'r')
# f.write('aa')
f.close()
w,打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件。
# w 如果文件不存在,就会生成一个新的文件,写入的内容会覆盖以前的内容
f = open('1.txt', 'w')
f.write('bbbb')
f.close()
a 打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,也就是新的内容会被写入到已有内容之后,如果该文件不存在,创建新文件进行写入。
# a 如果文件不存在,就会生成一个新的文件,写入的内容会追加到原有内容后面
f = open('2.txt', 'a')
f.write('dddd')
f.close()
访问模式参数是否可以省略,可以省略,省略表示访问模式为 r
# 访问模式参数是否可以省略,可以省略,省略表示访问模式为 r
f = open('1.txt')
f.close()
三、文件读取的操作:
1、read()
文件对象.read(num)
num表示要从文件中读取的数据的长度,单位是字节,如果没有传num,那么表示读取文件中的所有数据。
f = open('test.txt', 'r')
print(f.read())
f.close()
# 输出
# aaaaa
# bbbbb
# ccccc
# ddddd
# eeeee
2、readlines()
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
f = open('test.txt', 'r')
print(f.readlines())
f.close()
# 输出['aaaaa\n', 'bbbbb\n', 'ccccc\n', 'ddddd\n', 'eeeee\n']
3、readline()
f = open('test.txt', 'r')
print(f.readline())
print(f.readline())
f.close()
# 输出 aaaaa
# bbbbb
文件访问模式特点
模式 | 描述 |
r | 以只读方式打开文件,文件的指针将会放在文件的开头,这个是默认模式 |
rb | 以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头,这个是默认模式 |
r+ | 打开一个文件用于读写,文件指针将会放在文件的开头 |
rb+ | 以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头 |
w | 打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件 |
wb | 以二进制格式打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建文件 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件 |
a | 打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,也就是新的内容将会被写入到已有内容之后,如果该文件不存在,创建新文件进行写入。 |
但凡是带 b 都是以二进制格式打开文件的,但凡带 + 号的都是可读可写模式
对于带 r 的,但凡文件不存在,都报错,对于带w的,文件不存在,就创建新的文件
文件指针就是光标。
r+, r没有该文件则报错,文件指针在开头,所以能读取出来数据
w+, w没有该文件会新建文件,w特点,文件指针在开头,用新内容覆盖原有内容
a+, 没有该文件会新建文件:文件指针在结尾,无法读取数据(文件指针后面没有数据)
seek()
作用:用来移动文件指针,
语法如下:
文件对象.seek(偏移量,起始位置)
起始位置:
0:文件开头
1:当前位置
2:文件结尾
例如 使用a 文件访问模式,指针在最后面,然后调用seek(),使指针前移,可以访问出数据
"""
语法:文件对象.seek(偏移量,起始位置) 0 开头 1 当前 2 结尾
目标:
1、r 改变文件指针位置,改变读取数据开始位置或把文件指针放结尾(无法读取数据)
2、a 改变文件指针位置,做到可以读取数据
"""
f = open('test.txt', 'r')
# f.seek(3, 0)
f.seek(0, 2)
con = f.read()
print(con)
# 输出
# aa
# bbbbb
# ccccc
# ddddd
# eeeee
# 输出 空
f = open('test.txt', 'a+')
f.seek(0, 0)
con = f.read()
print(con)
# 输出
# aaaaa
# bbbbb
# ccccc
# ddddd
# eeeee
四、文件备份
1、用户输入目标文件
2、规划备份文件的名字
修改名字
3、备份文件写入数据(数据和原文件一样)
打开文件
写入数据
关闭文件
# 1、接收用户输入目标文件
old_name = input('请输入要备份文件的名字')
print(old_name)
print(type(old_name))
# 2、规划备份文件名
index = old_name.rfind('.')
if index > 0:
print(index)
new_name = old_name[:index] + '[备份]' + old_name[index:]
print(new_name)
# 输出test[备份].txt
# 3、备份写入数据
# 3.1 打开原文件和备份文件
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')
# 3.2 原文件读取,备份文件写入
while True:
con = old_f.read(1024)
if len(con) == 0:
break
new_f.write(con)
# 3.3 关闭文件
old_f.close()
new_f.close()
else:
print('输入的文件名错误,请重新输入')
五、文件和文件夹的操作
文件和文件夹的操作要借助os模块里的相关功能,具体步骤如下:
1、导入os模块
import os
2、使用os模块相关功能
os.函数名()
2.1 文件重命名
os.rename(目标文件名,新文件名)
import os
# 1、rename(),重命名
os.rename('test[备份文件].txt', '11.txt')
os.rename() 重命名文件夹,格式和重命名 文件一样
os.rename('aaa', 'ccc')
2.2 删除文件
os.remove(目标文件名)
# 2、remove(),删除文件
os.remove('11.txt')
2.3创建文件夹
os.mkdir(文件夹名字)
# 3、mkdir创建文件夹
os.mkdir('aaa')
2.4删除文件夹
os.rmdir(文件夹名字)
os.rmdir('aaa')
2.5获取当前目录
os.getcwd()
print(os.getcwd())
2.6改变默认目录
os.chdir(目录)
os.mkdir('aaa')
os.chdir('aaa')
os.mkdir('bbb')
2.7获取目录列表
os.listdir(目录),返回一个列表
print(os.listdir())
# 输出 ['01-体验文件操作.py', '02-主访问模式特点.py', '03-读取函数之read().py', '04-访问模式特点02.py']
print(os.listdir('aaa'))
['bbb']
获取aaa文件夹下面的目录
3、应用案例
批量修改文件名,即可以添加指定字符串,又能删除指定字符串
步骤:
3.1 先获取目录里的所有文件
3.2 构造新的文件名
3.3 重命名
import os
# os.rename('ccc', 'aaa')
file_name = os.listdir('aaa')
print(file_name)
for i in file_name:
new_name = 'python_' + i
os.rename(i, new_name)
优化后,批量修改名字和批量删除名字
import os
flag = 1
# os.rename('ccc', 'aaa')
file_name = os.listdir('aaa')
print(file_name)
for i in file_name:
if flag == 1:
new_name = 'python_' + i
elif flag == 2:
num = len('python_')
new_name = i[num:]
os.rename(i, new_name)
六、总结
文件操作步骤
6.1 打开:
文件对象 = open(目标文件,访问模式)
6.2 操作:
读
文件对象.read()
文件对象.readlines()
文件对象.readline()
写
文件对象.write()
seek() 改变指针位置
6.3 关闭
文件对象.close()
6.4 主访问模式
r 读,文件不存在则报错,文件指针在开头
w 写,文件不存在则创建文件 ,文件指针在开头,会把原数据覆盖掉
a 追加,文件指针在结尾,追加内容
6.5 文件和文件夹操作
导入 os模块
重名名:os.rename()
获取当前目录:os.getcwd()
获取目录列表: os.listdir()