【python办公自动化(3)】批量创建、复制、移动、删除、重命名文件及文件夹(查找并移动文件/文件夹)

本文介绍了如何使用Python的shutil和os模块进行文件和文件夹的批量操作,包括创建、复制、移动、重命名以及删除。通过示例展示了如何查找.zip文件,添加日期前缀重命名,并移动到新创建的backup文件夹中。
摘要由CSDN通过智能技术生成

创建文件夹

import os
os.mkdir('新文件夹')

注意:当文件夹已经存在时,运行这段代码会报错。一般会配合os.path.exists()使用

import os
if not os.path.exists('新文件夹'):
    os.mkdir('新文件夹')

当文件夹不存在时候会创建,也可以加上存在时直接continue即可

创建多层文件夹

import os
os.makedirs('第一层文件夹/第二层文件夹/第三层文件夹')

注意:当最里层文件夹已经存在时运行这段代码会报错

复制文件/文件夹

shutil模块

复制文件:shutil.copy(要复制的文件,要复制到的文件位置)
import shutil
shutil.copy('file1.txt', './新文件夹')
shutil.copy('file1.txt', './新文件夹/new_file.txt')

两种使用方式:①第二个参数写某个文件夹位置,则复制到该文件夹下;②第二个参数写某个文件路径,复制到这个路径下并且重命名

复制文件夹:shutil.copytree(要复制的文件夹,要复制到的新的文件夹位置)
import shutil
shutil.copytree('这是一个文件夹','这是一个新文件夹')

结果会将文件夹内的所有文件和文件夹都复制过去,注意当新文件夹不能已经存在

移动文件/文件夹

移动文件/文件夹:shutil.move(要移动的文件/文件夹,要复制到的文件位置)

import shutil
shutil.move('file2.txt', "新文件夹/file3.txt")
shutil.move('file1.txt', "新文件夹/")
shutil.move('这是一个文件夹', "新文件夹/")

两种使用方式:①第二个参数写某个文件夹位置,则移动到该文件夹下;②第二个参数写某个文件路径,移动到这个路径下并且重命名;③如果是文件夹记住最后加斜杠/

重命名文件/文件夹

os.rename(要重命名的文件/文件夹,新的名字)

import os
os.rename('这是一个文件夹','这是重命名的文件夹')
os.rename('file1.txt','new.txt')

删除

os.remove(要删除的文件)

import os
os.remove('file1.txt')

注意:只能删除文件,如果给的是文件夹路径则会报错

shutil.rmtree(要删除的文件夹)

import shutil
shutil.rmtree('这是一个文件夹')

综合应用

编写一个python程序,示例文件夹内容如下,要求:

(1)找到当前目录下的所有的.zip文件

(2)将所有的文件重命名,在原本文件名称的开头加上最后修改日期。比如:原来projects.zip,则改成2019-09-10-projects.zip

(3)创建一个新的文件夹叫backup

(4)将所有重命名的文件都移动到backup文件夹里面

示例的路径文件放置如下图:

包1(./auto_office2/第一层文件夹/第二层文件夹/第三层文件夹/第四层文件夹) 压缩包在第五层

包2(./auto_office2/解压) 压缩包在第三层

包3(./新文件夹\第二层\第三层)压缩包在第四层

包4(./)压缩包在第一层
在这里插入图片描述

import os 
import datetime
import shutil
import glob

os.chdir('D:\\python_major\\auto_office2')
if not os.path.exists('backup'):
	os.mkdir('backup')

for dirpath,dirnames,files in os.walk('./'):
    #print(dirpath)
    for file in os.scandir(dirpath):
        #print(file.name)
        if file.name.endswith(".zip"):
           # print(file.name)
            tm = datetime.datetime.fromtimestamp(file.stat().st_mtime)
            new_file = str(tm.year)+'-'+str(tm.month)+'-'+str(tm.day)+'-'+file.name
            os.rename(dirpath +  '/' + file.name,new_file)
            #os.rename(file,new_file)与上一行代码作用一样
            #修改后的文件会在os.getcwd()输出的路径下

#可以在上面直接使用shutil.move,也可以重新查找一下修改过的zip文件,然后全部转移            
file_ls = glob.glob('*.zip') 
for name in file_ls:
	shutil.move(name,'backup/')           
print('finished!') 

输出结果如下:
在这里插入图片描述

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lys_828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值