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

创建文件夹

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')

ls_zip = []
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)
            ls_zip.append(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)
file_ls = glob.glob('*.zip') 
for name in file_ls:
	shutil.move(name,'backup/')           
print('finished!') 

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

发布了20 篇原创文章 · 获赞 4 · 访问量 1986

猜你喜欢

转载自blog.csdn.net/lys_828/article/details/104032459