1 文件的操作(打开、读写、关闭)
1.1 访问模式
总结:
1、访问模式(三个主访问模式)
'r' : 只读(当不指定访问模式时,默认该模式):如果文件不存在报错,不支持写
'w' :写入:如果文件不存在则新建文件,写入时覆盖原有内容
'a' : 追加: 如果文件不存在则新建文件,写入时在原有内容基础上追加新内容
2、访问模式特点('b':二进制,'+':可读可写)
r、rb、r+、rb+ :如果文件不存在报错,文件指针在文件开头
w、wb 、w+、 wb+ :如果文件不存在则新建文件,覆盖,文件指针在文件开头
a 、ab、 a+、 ab+ : 如果文件不存在则新建文件,追加,文件指针在文件结尾
1.2 文件打开
文件对象 = open('文件名','访问模式')
1.3 文件读写
文件对象.write(string )
string 表示要写入文件的字符串(或字节串,仅适用写入二进制文件中)。
a=open("text.txt",'w')
a.write("""aaa
bbb
ccc
ddd
""")
如果文件内容是中文的,在打开文件时加上参数encoding='UTF-8'。
file2 =open("textZH.txt",'w',encoding='UTF-8')
文件对象.read(num)
num表示从文件中读取数据的长度(单位字节),\n占一个字符,省略就表示读取所有数据
文件对象.readlines()
需要赋值给一个变量
将整个文件中的内容一次性读取,并返回一个列表,原文件中每一行数据为一个元素。例如['aaa\n','bbb\n','ccc']。每一行都有换行自带\n,最后一行没有换行不带\n
文件对象.readline()
需要赋值给一个变量
一次性读取一行内容,第一次调用读取第一行,第二次调用读取第二行...不带换行符\n
1.3 文件关闭
文件对象.close()
1.4 移动指针
文件对象.seek(偏移量,起始位置)
偏移量:假设起始位置是开头,偏移量是5,那文件指针就在第6个字节上
起始位置:0开头,1当前位置,2文件结尾
偏移量和起始位置都为0 时,可以只写一个0
例如已有文件:
a=open("text.txt",'r')
a.seek(7,0)
print(a.read())
a.close()
读取结果
2 文件备份
文件备份的步骤:
步骤1:用户输入目标文件,
file = input('请输入您要备份的文件名:')
步骤2:截取目标文件名并拼接出备份文件的名字
2.1) 提取后缀,找到名字中最右侧的点.
2.2) 拼接新备份文件的名字 = 原名字+[备份]+后缀
步骤3:备份文件写入数据(将原文件内容复制到备份文件)
3.1) 打开原文件和备份文件
3.2) 原文件读取,新文件写入。如果不确定目标文件的大小,循环读取固定大小进行写入,当读取结果为0时,读取结束。
步骤4:关闭文件
def fileBackup():
#1、确定要备份的文件名
fileName = input("请输入要备份的文件名:")
#2、截取目标文件名并拼接出备份文件的名字
dotPlace = fileName.rfind('.') #与find()功能相同,但查找方向为右侧开始,找到最右边点的位置
print(dotPlace)
if dotPlace > 0 :
suffix = fileName[dotPlace:] #点到最后为后缀名
print(suffix)
else:
print('文件名输入错误')
#拼接备份文件的新名字
backupFileName = fileName[:dotPlace] + "_备份_" + suffix
print(backupFileName)
#3、将原文件的内容分批写入备份文件
oldFile = open(fileName,'rb')
backupFile = open(backupFileName,'wb')
while True:
data = oldFile.read(2048)
print(data)
print(type(data))
if len(data) == 0: #当读取数据为0时,读完了终止循环
break
backupFile.write(data)
oldFile.close()
backupFile.close()
if __name__ == "__main__":
fileBackup()
3 文件和文件夹操作
文件和文件夹操作需要导入 os 模块,使用模块的相关方法。import os
3.1 文件和文件夹重命名
os.rename('旧文件名', '新文件名') #目标文件名可以写路径,否则默认当前文件夹下面
os.rename('旧文件夹名', '新文件夹名')
3.2 删除文件和文件夹
os.remove(目标文件名)
没有指定文件会报错,不能删文件夹
os.rmdir(文件夹名字)
没有指定文件夹会报错
3.3 创建文件夹
os.mkdir(文件夹名字)
重复创建相同名字的文件夹报错
3.4 获取当前文件所在目录路径
os.getcwd()
3.5 改变默认目录
os.chdir(目录) :用于改变当前工作目录到指定的路径
例如在文件夹aa目录下创建bb目录:
os.chdir('aa')
os.mkdir('bb')
3.6 获取某个文件夹下所有文件和文件夹的名称
os.listdir(目录) :返回指定文件夹下所有文件和文件夹的名称,不写目录即为当前文件夹下