一、文件基本操作
- 打开文件
- 读写文件
- 关闭文件
注意:可以只打开和关闭文件。不进行任何读写操作。
1. 打开文件
在python中,使用open函数,可以打开一个已经存在的文件。或者创建一个新的文件。
文件对象 = open(name, mode)
name:要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):只读、写入、追加等。
访问模式参数可以省略,如果省略表示访问模式为r
2. 文件访问模式
访问模式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
3. 读取文件
- read()
文件对象.read(num)
num 表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
# 文件内容如果换行,底层有\n,会有字节占位
f = open("test.txt", "r")
text = f.read(5) # 不传参数,就默认读取所有
f.close()
print(text)
- readlines()
readlines 可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
# 文件内容如果换行,底层有\n,会有字节占位
f = open("test.txt", "r")
text = f.readlines()
print(text) # ['aaa\n', 'bbb\n', 'cccc\n', 'dddd']
f.close()
- readline()
readline()一次读取一行内容。
f = open("test.txt", "r")
text = f.readline()
print(f"读取第一行{text}")
text2 = f.readline()
print(f"读取第二行{text2}")
f.close()
4. 文件指针
- seek()
作用:用来移动文件指针
文件对象.seek(偏移量, 起始位置)
起始位置:0:文件开头、1:当前位置、2:文件结尾
f = open("test.txt", "r+")
f.seek(2, 0) # 文件开头偏移两个字节
print(f.read())
f.close()
二、文件备份
1. 原始备份
old_name = input("请输入要备份的文件名:")
index = old_name.rfind(".")
if index > 0:
postfix = old_name[index:]
new_name = old_name[:index] + "[备份]" + postfix
old_f = open(old_name, "r")
new_f = open(new_name, "w")
# 如果不确定目标文件大小,循环读取写入,当读取出来的数据没有了就终止循环
while True:
text = old_f.read(1024)
if len(text) == 0:
break
new_f.write(text)
old_f.close()
new_f.close()
2. 文件和文件夹的操作
在Python中文件和文件夹的操作需要借助os模块里面相关的功能,具体步骤如下:
- 导入os模块,使用os模块相关功能
import os
os.函数名
- 文件重命名
os.rename(目标文件名, 新文件名)
- 删除文件
os.remove(目标文件名)
- 创建文件夹
os.mkdir(文件夹名字) # 文件夹存在会报错
- 删除文件夹
os.rmdir(文件夹名字)
- 获取当前文件所在目录
os.getcwd()
- 改变默认目录
os.chdir(目录) # 切换当前目录到目标目录
- 获取目录列表
os.listdir(目录) # 不指定目录就返回当前目录下所有文件列表
- 文件夹重命名
os.rename(目标文件夹名, 新文件夹名)
# 批量重命名当前目录下的所有文件
import os
flag = 1
file_list = os.listdir()
print(file_list)
for i in file_list:
if flag == 1: # 批量重命名当前目录下的所有文件
new_name = "Python_" + i
elif flag == 2: # 删除指定字符,恢复原文件名
new_name = i[len("Python_"):]
os.rename(i, new_name)