【循序渐进学Python——文件的备份和重命名】

【循序渐进学Python——文件的备份和重命名】

今天这篇博客就是教大家怎么对计算机中的文件进行操作,以前我们文件备份和重命名的时候,总是复制粘贴或者是用鼠标去点,刚开始感觉这样还好.

但是如果工作量大了呢?用户需求高了呢?对我们来说就有点麻烦了,而使用Python对文件进行操作,就会方便很多,接下来我将向大家演示文件的操作,不要眨眼!来吧,展示!

文件的备份

备份流程:

1.原始文件

2.原始文件打开

3.原始文件另存为

4.新文件创建

文件备份原理:

1.先将原始文件打开

2.将原始文件中的数据全部读取到内存变量中

3.开启一个新的文件

4.将变量中的数据全部写入到新的文件中

案例:

需求:实现文件的Copy

思路:

  1. 假设Copy文件需要时间

  2. 用户选择输入需要Copy的文件路径及名称

  3. 同时用户选择输入需要Copy的目标路径

  4. 然后进行文件Copy

  5. 首先文件Copy之后需要能够正常打开运行

  6. 如果路径不存在则需要创建路径

  7. 如果指定的路径中已经有该文件则需要在原名称之后(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)

猜你喜欢

转载自blog.csdn.net/XVJINHUA954/article/details/108001853