【循序渐进学Python——文件的备份和重命名】
今天这篇博客就是教大家怎么对计算机中的文件进行操作,以前我们文件备份和重命名的时候,总是复制粘贴或者是用鼠标去点,刚开始感觉这样还好.
但是如果工作量大了呢?用户需求高了呢?对我们来说就有点麻烦了,而使用Python对文件进行操作,就会方便很多,接下来我将向大家演示文件的操作,不要眨眼!来吧,展示!
文件的备份
备份流程:
1.原始文件
2.原始文件打开
3.原始文件另存为
4.新文件创建
文件备份原理:
1.先将原始文件打开
2.将原始文件中的数据全部读取到内存变量中
3.开启一个新的文件
4.将变量中的数据全部写入到新的文件中
案例:
需求:实现文件的Copy
思路:
-
假设Copy文件需要时间
-
用户选择输入需要Copy的文件路径及名称
-
同时用户选择输入需要Copy的目标路径
-
然后进行文件Copy
-
首先文件Copy之后需要能够正常打开运行
-
如果路径不存在则需要创建路径
-
如果指定的路径中已经有该文件则需要在原名称之后(1)(2)。。。。
实现:
# 导入包
import os
import time
# 先提示用户输入要copy的文件路径以及名称.扩展名
copyname = input("请输入要copy的文件路径:")
name = input("请输入要copy的文件名称:")
mblj = input("请输入要copy的目标路径:")
# 以只读的方式打开要备份的文件
oldwj = open(copyname + '//' + name, "rb")
# 获取到文件的扩展名
kzm = name.rfind('.')
# 判断路径是否存在
# 不存在创建
if not os.path.exists(mblj):
os.makedirs(mblj)
os.chdir(mblj)
else:
# 存在的话修改默认目录
os.chdir(mblj)
# 判断扩展名是否存在
if kzm > 0:
fileext = name[kzm:]
# copy以后的新文件名
newname = name[:kzm] + "(1)" + fileext
# 创建一个新文件并打开
newwj = open(newname, "wb")
# 将复制文件中的东西复制到新文件中
while True:
# 为了防止内存崩溃所以分批一点一点读取
duq = oldwj.read(1024 * 1024 * 10)
time.sleep(2)
# 如果可以读取到数据的话,那么就继续
# 如果不可以的话,那么就结束读取
if duq:
newwj.write(duq)
else:
break
# copy完数据之后关闭文件
oldwj.close()
newwj.close()
文件的相关操作
- 经常对文件进行的操作:删除、重命名等一系列操作
- 在python中这些功能都在os模块中,因此要是对文件进行操作首先导入os模块
文件重命名
- os模块中的rename()就可以完成对文件的重命名工作
格式:
rename(需要修改的文件的名称,新的文件的名称)
实例:
import os
os.rename("123.txt", "456.txt")
批量修改文件名
先创建初始文件
import os
# 创建文件在Python文件夹里面创建10个
# 检查python文件夹是否存在,如果不存在直接创建
if not os.path.exists("python"):
os.mkdir("python")
# 检查完之后将默认路径设为python
os.chdir("python")
# 给该路径下创建10个文件
for i in range(1, 11):
file = open("【初学python第%d集】.txt" % i, "w")
file.close()
创建完以后再对初始文件进行批量修改文件名
import os
# 修改默认路径
os.chdir("python")
# 获取路径中所有的文件列表
file_list = os.listdir()
# 通过循环遍历目录列表
for oldname in file_list:
# 构造新的名字
new_name = oldname.replace("初学", "循序渐进学")
# 依次修改文件的名称
os.rename(oldname, new_name)