当前位置:   article > 正文

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

python创建文件夹

一、创建文件夹

如果文件夹不存在,我们需要先创建文件夹,再移动文件。
创建文件夹可以使用 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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

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

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"))
  • 1
  • 2
  • 3
  • 4

结果

True
False
  • 1
  • 2

接下来我们可以使用 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

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

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

三、文件自动分类过程

首先,获取文件夹中所有文件名称,用 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/571723
推荐阅读
相关标签
  

闽ICP备14008679号