python办公自动化(3)——创建文件夹(带过程与结果)

一、创建文件夹

如果文件夹不存在,我们需要先创建文件夹,再移动文件。
创建文件夹可以使用 os.mkdir() 函数:将要创建的文件夹路径作为参数传入函数中即可。
在之前判断目标文件夹是否存在的代码中,加上 os.mkdir(targetPath) 即可创建所有不存在的文件夹。

# 使用import导入os模块
import os

# 将阿文的下载文件夹路径 /Users/yequ/Downloads 赋值给变量downloadPath
downloadPath = "/Users/yequ/Downloads"

# 使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量allItems
allItems = os.listdir(downloadPath)

# 使用for循环遍历所有文件(夹)
for item in allItems:
    # 获取文件后缀名
    extension = os.path.splitext(item)[1].lower()

    # 定义一个变量targetPath,用来表示准备移动到的文件夹路径
    targetPath = ""
    if extension in [".jpg", ".jpeg", ".gif", ".png", ".bmp"]:
        # 使用os.path.join()函数拼接分类文件夹路径:图片文件
        targetPath = os.path.join(downloadPath, "图片文件")
    elif extension in [".avi", ".mp4", ".wmv", ".mov", ".flv"]:
        # 使用os.path.join()函数拼接分类文件夹路径:视频文件
        targetPath = os.path.join(downloadPath, "视频文件")
    elif extension in [".wav", ".mp3", ".mid", ".ape", ".flac"]:
        # 使用os.path.join()函数拼接分类文件夹路径:音频文件
        targetPath = os.path.join(downloadPath, "音频文件")
    elif extension in [".pdf"]:
        # 使用os.path.join()函数拼接分类文件夹路径:PDF文件
        targetPath = os.path.join(downloadPath, "PDF文件")
    elif extension in [".docx", ".doc"]:
        # 使用os.path.join()函数拼接分类文件夹路径:Word文件
        targetPath = os.path.join(downloadPath, "Word文件")
    elif extension in [".xlsx", ".xls"]:
        # 使用os.path.join()函数拼接分类文件夹路径:Excel文件
        targetPath = os.path.join(downloadPath, "Excel文件")
    elif extension in [".pptx", ".ppt"]:
        # 使用os.path.join()函数拼接分类文件夹路径:PPT文件
        targetPath = os.path.join(downloadPath, "PPT文件")
    else:
        # 使用os.path.join()函数拼接分类文件夹路径:其他文件
        targetPath = os.path.join(downloadPath, "其他文件")
    # 如果目标文件夹不存在,使用os.mkdir()函数创建文件夹
    if not os.path.exists(targetPath):
        # 使用os.mkdir()函数创建文件夹
        os.mkdir(targetPath)

但是若是原有文件中有个文件名跟需要拖移到的目标文件夹重名,该方式是无法甄别出来的,这个时候需要判断该文件是否为文件夹

1)判断该文件是否为文件夹

我们将要进行判断的文件路径传入到 os.path.isdir() 函数中,如果该路径是文件夹就会返回True,如果不是就返回False。

import os

print(os.path.isdir("/Users/yequ/Downloads/PDF文件"))
print(os.path.isdir("/Users/yequ/Downloads/OKR小组讨论1.mp3"))

结果

True
False

接下来我们可以使用 if 语句进行判断,当结果是 True 时,也就是该路径是一个文件夹时,使用print输出itemPath。

二、移动文件夹

要想移动文件,我们需要导入Python中另一个内置的模块 shutil ,然后使用 shutil.move() 函数来对文件进行移动。

shutil.move() 函数可以用来移动文件或文件夹。它接收两个参数,第一个参数是要移动的文件(夹)路径,第二个参数是目标文件(夹)的路径。

# 导入shutil模块
import shutil

# 准备移动的文件路径
srcPath = "/Users/yequ/Downloads/心动.MP3"

# 目标文件夹路径
targetPath = "/Users/yequ/Downloads/音频文件"

# 使用shutil.move()函数移动文件
shutil.move(srcPath, targetPath)

阿文的需求,是把分好类的文件移动到对应的文件夹里。

所以我们只需在程序判断 itemPath 不是一个文件夹的时候,使用 shutil.move() 函数将itemPath路径的文件移动到targetPath路径的文件夹下。

 # 判断当itemPath路径不是文件夹时,移动文件到分类文件夹去
    if not os.path.isdir(itemPath):
        # 使用shutil.move()函数移动文件到targetPath路径
        shutil.move(itemPath, targetPath)

三、文件自动分类过程

首先,获取文件夹中所有文件名称,用 os.path.join() 函数拼接出要移动到的目标地址。

然后,使用 os.path.exists() 函数判断目标文件夹是否存在,不存在用 os.mkdir() 创建文件夹。

再者,使用 os.path.isdir() 函数判断是否为文件夹。

最后,当不是文件夹时,使用 shutil.move() 函数移动。

例题

夜曲中学乔老师收到了学生们的答题卡文件夹,把这个文件夹放在电脑桌面上,打开一看,所有班级的学生都在一个文件夹里。

例如:
七年级一班-贾量.docx
七年级二班-曹梦婷.docx
七年级六班-潘婷.docx

乔老师想要把答题卡按照班级归类,在exam文件夹中创建班级文件夹,例如:七年级一班,再把答题卡移动到对应的班级中。

今天我们就不要手动分类,运用文件自动化操作,帮助乔老师把所有的答题卡,放到对应的文件夹里吧~

文件夹路径:/Users/yequ/Desktop/exam

思路
首先是确认班级文件在不在,这个需要先把文件夹路径下的所有文件名导出,并分割字符串取前面那部分,然后判断这些班级文件夹是否存在,不存在则创建好。
下面是将原有文件移动到班级文件夹中。

# TODO 使用import导入os模块
import os

# TODO 使用import导入shutil模块
import shutil

# TODO 将文件夹路径/Users/yequ/Desktop/exam 赋值给变量path
path="/Users/yequ/Desktop/exam"

# TODO 使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量allItems
allItems=os.listdir(path)

# TODO 使用for循环遍历所有文件(夹)
for item in allItems:
    # TODO 使用split()分割文件名,获取第一个元素,赋值给classInfo(获取班级信息)
    classInfo=item.split("-")[0]
    # TODO 使用os.path.join()函数拼接分类文件夹路径,赋值给classPath
    classPath=os.path.join(path,classInfo)

    # TODO 使用os.path.exists()函数判断当如果目标文件夹不存在
    if not os.path.exists(classPath):
        # TODO 使用os.mkdir()函数创建文件夹
        os.mkdir(classPath)

    # TODO 使用os.path.join()函数拼接文件路径,并赋值给变量sourcePath
    SourcePath=os.path.join(path,item)

    # TODO 使用os.path.isdir()函数判断当目标文件不是文件夹
    if not os.path.isdir(SourcePath):
        # TODO 移动文件到分类文件夹去
        shutil.move(SourcePath,classPath)
xlwings是一个用于在Python中操作Excel的模块。它提供了读写Excel文件的功能,并且可以调整Excel文件的表格宽度、字体颜色等。xlwings可以通过引用单元格的行列tuple来操作单元格,也可以将数据存储到单元格中。例如,可以使用xlwings将一个值存储到指定的单元格中,也可以将一个列表存储到一行或一列中。同样,可以使用xlwings读取单个值或一段数据。\[2\]\[3\] 在你提供的示例中,xlwings被用于枚举指定文件下的Excel类型文件,并删除这些文件中的K列。首先,使用os模块的listdir函数列出指定文件下的所有文件,并将Excel类型的文件路径存储在一个列表中。然后,使用xlwings打开每个Excel文件,获取第一个工作表的行数,并遍历每一行。如果第11列的值不为空,就将其置为空。最后,保存并关闭Excel文件。需要注意的是,在程序结束后,需要使用del app语句来关闭Excel进程,以防止进程残留。\[1\] 总之,xlwings是一个方便的Python模块,可以帮助你实现Excel自动化办公的任务。 #### 引用[.reference_title] - *1* [Python3学习笔记08-Python3读写Excel表之xlwings](https://blog.csdn.net/asanscape/article/details/80372743)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [插上翅膀,让Excel飞起来——xlwings(一)](https://blog.csdn.net/weixin_30900589/article/details/98436561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值