3 文件备份
程序备份后的文件名为:备份文件名[备份]后缀,如:test[备份].txt
3.1 文件备份的步骤
- 获取需要进行备份的文件名
- 根据需要进行备份的文件名,得到备份文件的文件名
- 数据写入备份文件
3.2 代码实现
3.2.1 获取需要进行备份的文件名
# 1. 获取需要进行备份的文件名 old_name = input('请输入需要备份的文件名:') print('需要进行备份的文件名为:', old_name)
3.2.2 得到备份文件的文件名
- 提取文件的后缀
- 组织备份文件的文件名,xx[备份].后缀
# 2. 根据需要进行备份的文件名,得到备份文件的文件名 # 2.1. 提取文件的后缀 # 找到点的位置 idx = old_name.rfind('.') print('文件后缀名点的位置下标:', idx) # 获取文件名字和后缀 file_name = old_name[:idx] back_name = old_name[idx:] print('文件的名字为:', file_name) print('文件的后缀为:', back_name) # 2.2. 组织备份文件的文件名,xx[备份].后缀 new_name = file_name + '[备份]' + back_name print('备份文件的文件名为:', new_name)
3.2.3 数据写入备份文件
实现步骤:
(1)打开源文件和备份文件
(2)将源文件数据写入备份文件
(3)关闭文件
# 3. 数据写入备份文件 # 3.1 打开源文件和备份文件 # 不确定打开的文件是什么类型的文件,所以以二进制的形式打开文件 old_f = open(old_name, 'rb') new_f = open(new_name, 'wb') # 3.2 将源文件数据写入备份文件 # 由于不确定文件的大小,所以采用循环读取的方式 # 当读取出来的数据没有了,终止循环 while True: # 每次读取长度为1024的数据 content = old_f.read(1024) # 当读取的数据长度为0说明读取完成,退出循环 if len(content) == 0: break # 将数据写入备份文件 new_f.write(content) # 3.3 关闭文件 old_f.close() new_f.close()
3.2.4 判断文件名是否为有效
当输入的文件名为.txt
我们认为是无效文件名,不进行备份,即输入的文件名不能只有文件的后缀而没有文件的名字。
# 1. 获取需要进行备份的文件名 old_name = input('请输入需要备份的文件名:') print('需要进行备份的文件名为:', old_name) # 2. 根据需要进行备份的文件名,得到备份文件的文件名 # 2.1. 提取文件的后缀 # 找到点的位置 idx = old_name.rfind('.') # 判断是否为有效的文件名 # 文件不能只有文件后缀,即后缀前的点的下标位置不能为0 # 输入的文件名有效才执行文件的备份 if idx > 0: print('文件后缀名点的位置下标:', idx) # 获取文件名字和后缀 file_name = old_name[:idx] back_name = old_name[idx:] print('文件的名字为:', file_name) print('文件的后缀为:', back_name) # 2.2. 组织备份文件的文件名,xx[备份].后缀 new_name = file_name + '[备份]' + back_name print('备份文件的文件名为:', new_name) # 3. 数据写入备份文件 # 3.1 打开源文件和备份文件 # 不确定打开的文件是什么类型的文件,所以以二进制的形式打开文件 old_f = open(old_name, 'rb') new_f = open(new_name, 'wb') # 3.2 将源文件数据写入备份文件 # 由于不确定文件的大小,所以采用循环读取的方式 # 当读取出来的数据没有了,终止循环 while True: # 每次读取长度为1024的数据 content = old_f.read(1024) # 当读取的数据长度为0说明读取完成,退出循环 if len(content) == 0: break # 将数据写入备份文件 new_f.write(content) # 3.3 关闭文件 old_f.close() new_f.close() else: print('输入的文件名有误,请重新输入...'
3.2.5 判断文件是否存在
由于文件不存在的时候打开文件,会报异常,所以通过是否报异常来判断文件是否存在
# 1. 获取需要进行备份的文件名 old_name = input('请输入需要备份的文件名:') print('需要进行备份的文件名为:', old_name) # 2. 根据需要进行备份的文件名,得到备份文件的文件名 # 2.1. 提取文件的后缀 # 找到点的位置 idx = old_name.rfind('.') # 判断是否为有效的文件名 # 文件不能只有文件后缀,即后缀前的点的下标位置不能为0 # 输入的文件名有效才执行文件的备份 if idx > 0: print('文件后缀名点的位置下标:', idx) # 获取文件名字和后缀 file_name = old_name[:idx] back_name = old_name[idx:] print('文件的名字为:', file_name) print('文件的后缀为:', back_name) # 2.2. 组织备份文件的文件名,xx[备份].后缀 new_name = file_name + '[备份]' + back_name print('备份文件的文件名为:', new_name) # 由于文件不存在会爆异常,所以通过异常判断文件是否存在 try: # 3. 数据写入备份文件 # 3.1 打开源文件和备份文件 # 不确定打开的文件是什么类型的文件,所以以二进制的形式打开文件 old_f = open(old_name, 'rb') new_f = open(new_name, 'wb') # 3.2 将源文件数据写入备份文件 # 由于不确定文件的大小,所以采用循环读取的方式 # 当读取出来的数据没有了,终止循环 while True: # 每次读取长度为1024的数据 content = old_f.read(1024) # 当读取的数据长度为0说明读取完成,退出循环 if len(content) == 0: break # 将数据写入备份文件 new_f.write(content) # 3.3 关闭文件 old_f.close() new_f.close() except Exception as e: print('需要进行备份的文件不存在,请重新输入...') else: print('输入的文件名有误,请重新输入...')
4. 文件和文件夹的操作
这里的文件和文件夹的操作指的是对文件和文件夹本身进行操作,如对文件进行重命名等。
在python中对文件和文件夹进行操作需要借助os模块中的相关功能。
导入os模块:
import os
使用os模块的相关功能:
os.函数名()
4.1 重命名
4.1.1 重命名文件
语法:
os.rename(str, dst)
- str:文件(文件夹)的完整路径名或文件(文件夹)名
- dst:文件(文件夹)的新完整路径名或文件(文件夹)的新文件(文件夹)名
对与代码文件在同一目录下的文件进行重命名:
import os # 对 test.txt 文件进行重命名 os.rename('test.txt', 'test1.txt')
对指定目录下的文件进行重命名:
D:\\桌面文件\\学习时代码文件夹\\1.txt
import os # 对 test.txt 文件进行重命名 os.rename('D:\\桌面文件\\学习时代码文件夹\\1.txt', 'D:\\桌面文件\\学习时代码文件夹\\test1.txt')