文件操作的作用
文件的基本操作
文件操作的步骤
打开文件
在Python中,使用open()
函数,可以打开一个已存在的文件,或创建一个新文件,返回的是一个**file**
对象。
open(name, mode)
其中:
1. name是目标文件名,或带路径的目标文件名;
2. mode是打开文件的模式,只读、写入或追加等,默认的是只读。
fo = open("demo.txt", "w") # 创建文件
fo.write("aaa") # 想文件写入数据
fo.close() # 关闭文件
文件打开模式
- “
**r**
”、“**w**
”、“**a**
”为主模式,带“**+**
”符的表示有读写功能,“**b**
”表示以二进制方式打开; - 所有的衍生模式,都继承其主模式的功能。 | r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 | | —- | —- | | rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 | | r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 | | rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 | | w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 | | wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 | | w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 | | wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 | | a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 | | ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 | | a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 | | ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
读写操作
read()
返回的是文件内容。
文件对象.read(num)
其中:
num表示从文件中读取的数据的长度(单位是字节),如果不传入num,表示读取文件中所有的数据。
fo = open("test.txt", "r")
# fo.write("bbb")
tempFile = fo.read()
print(tempFile) # 打印文件内的所有内容
fo.close()
readlines()
readlines()
可以按照行的方式把整个文件中的内容进行一次性读取,并返回一个列表。其中,每一行的数据是一个元素。
fo = open("test.txt", "r")
tempFile = fo.readlines() # 按行读取整个文件
print(tempFile) # ['aaaaa\n', 'bbbbb\n', 'ccccc\n', 'ddddd']
fo.close()
readline()
readline()
可以按照行的方式读取文件内容,一次读取一行数据,返回的是文件内容。
fo = open("test.txt", "r")
tempFile1 = fo.readline() # 按行读取文件内容
tempFile2 = fo.readline() # 按行读取文件内容
print(tempFile1) # aaaaa
print(tempFile2) # bbbbb
fo.close()
seek()
用来移动文件指针。
文件对象.seek(偏移量, 起始位置)
起始位置:
0:----文件开头;
1:----当前位置;
2:----文件结尾。
fo = open("test.txt", "r")
fo.seek(2, 0) # 文件指针指向开头偏移2个字节
tempFile1 = fo.readlines() # 按行读取
print(tempFile1) # ['aaa\n', 'bbbbb\n', 'ccccc\n', 'ddddd']
fo.close()
关闭文件
文件对象.close()
文件读写示例——文件备份操作
"""
用户输入当前目录下的文件名(包含后缀名),程序完成对该文件的备份功能
备份文件为xx[备份]后缀,例如:test[备份].txt
"""
# 用户输入
oldName = input("请输入你要备份的文件名:")
# 备份名处理
# 从右侧开始查找文件后缀的第一个点
pointIndex = oldName.rfind(".")
# 判断文件名是否有效
if pointIndex > 0: # 当用户输入".txt"时,pointIndex值为0,为无效文件名(编译会报错)
postFix = oldName[pointIndex:]
newName = oldName[:pointIndex] + "[备份]" + postFix
# 写入数据操作
"""
# 方法1(整个文件读写):----占用内存空间(不推荐)
# 读取旧文件数据
oldFile = open(oldName, "rb")
tempData = oldFile.read()
oldFile.close()
# 数据写入新文件
newFile = open(newName, "wb")
newFile.write(tempData)
newFile.close()
"""
# 方法2(循环读写固定长度数据):占用内存较小----推荐
# 读取旧文件数据
oldFile = open(oldName, "rb")
newFile = open(newName, "wb")
# 数据写入新文件
while True:
tempData = oldFile.read(10)
if len(tempData) == 0: # 退出条件
break
newFile.write(tempData)
oldFile.close()
newFile.close()
文件和文件夹操作
在Python中的文件和文件夹操作,要借助**os**
模块里面的相关功能。
# 导入模块
import os
# 使用功能
os.函数名()
文件
文件重命名
os.rename(目标文件名, 新文件名)
删除文件
os.remove(目标文件名)
文件夹
创建文件夹
os.mkdir(文件夹名称)
删除文件夹
os.rmdir(文件夹名称)
获取当前目录路径
os.getcwd()
改变默认目录
os.chdir(目录路径)
获取目录列表
os.listdir(目录)
文件操作示例——批量修改文件名
"""
批量修改文件名:
1.可添加指定文字;
2,可删除指定文字。
"""
# 导入os模块
import os
modifyMode = int(input("请输入你要执行的修改模式(1:增加,0:删除):"))
# 接收传入的修改名字
if modifyMode == 1:
modifySeg = input("请输入你要批量增加的字符:")
# 获取当前目录列表
fileNamelist = os.listdir()
# print(fileNamelist)
# 构造新名字
for i in fileNamelist:
newName = modifySeg + i
os.rename(i, newName)
elif modifyMode == 0:
modifySeg = input("请输入你要批量增加的字符:")
# 获取当前目录列表
fileNamelist = os.listdir()
# print(fileNamelist)
# 构造新名字
for i in fileNamelist: # 功能过于简单
length = len(modifySeg)
newName = i[length:]
os.rename(i, newName)
else:
print("请按要求输入信息!")
newNamelist = os.listdir()
print(newNamelist)